use warnings; use strict; Main( @ARGV ); exit( 0 ); my %hash; BEGIN { %hash = ( bar => 'value' ); } sub Foo { print $hash{shift(@_)} } sub Main { Foo('bar'); } #### sub Foo { my %hash = ( bar => 'value' ) BEGIN; print $hash{shift(@_)}; }