my $fh = do { local *FH; \*FH }; #### #!/usr/bin/perl -l print 'before: ', join ' ', keys %foo::; my $fh; { package foo; open $fh, '<-' or die $!; } print 'after opened $fh: ', join ' ', keys %foo::; *{ 'foo::$bar' } = \'bar'; print 'created *$bar: ', join ' ', keys %foo::; print 'foo::$bar = ', ${'foo::$bar'}; { package foo; our $bar; open $bar, '<-' or die $!; print 'foo::$bar = ', ${'foo::$bar'}; print 'foo::bar = ', ${'foo::bar'}; print 'after $bar: ', join ' ', keys %foo::; } eval q{ package foo; local *baz = \'baz'; }; print 'after local *baz: ', join ' ', keys %foo::; __END__ before: bar after opened $fh: bar created *$bar: bar $bar foo::$bar = bar foo::$bar = bar foo::bar = GLOB(0x4f824c) after $bar: bar $bar after local *baz: bar baz $bar