>perl -wMstrict -le "my $scalar = 99; foo(); my $scalar = 42; sub foo { print qq{scalar in foo: $scalar} } " "my" variable $scalar masks earlier declaration in same scope at ... Use of uninitialized value in concatenation (.) or string at ... scalar in foo: >perl -wMstrict -le "my $scalar = 99; foo(); BEGIN { my $scalar = 42; sub foo { print qq{scalar in foo: $scalar} } } " scalar in foo: 42