package MyPackage; use Symbol qw( gensym ); ... sub import { MyPackage->export_to_level(1, @_); } sub open_file { my ($handle, $file) = @_; ${$handle} = gensym(); open *${$handle}, $file || die; import(*${$handle}); # this apparently isn't working? } #### use MyPackage; use strict; ... open_file('LOG', 'log.txt'); while (<$LOG>) { print; } # yields the following: Global symbol "$LOG" requires explicit package name at ./moduletest.pl line 21. Execution of ./moduletest.pl aborted due to compilation errors.