use strict; use warnings; package MyPackage; sub open_file { my $fh; my $ok; require 5.006; # Require Perl 5.6 # Support both 2 and 3 arg version of open. if (@_ == 1) { $ok = open($fh, $_[0]); } else { $ok = open($fh, $_[0], $_[1]); } die("$!\n") unless $ok; return $fh; } 1; #### use strict; use warnings; use MyPackage; our $LOG = open_file('log.txt'); # 'my' instead of 'our' also works while (<$LOG>) { print; } #### use strict; use warnings; package MyPackage; sub open_file { local *fh; my $ok; # Support both 2 and 3 arg version of open. if (@_ == 1) { $ok = open(*fh, $_[0]); } else { require 5.006; # Require Perl 5.6 $ok = open(*fh, $_[0], $_[1]); } die("$!\n") unless $ok; return *fh; } 1; #### use strict; use warnings; use MyPackage; *LOG = open_file('log.txt'); while () { print; }