$ perl -Mwarnings -Mstrict -le 'foo(); { my $var=42; sub foo { print $var; } }' Use of uninitialized value in print at -e line 1. $ perl -Mwarnings -Mstrict -le 'foo(); BEGIN { my $var=42; sub foo { print $var; } }' 42