use warnings; use strict; my $foo = 1; printFoo (); my $foo = 2; printFoo (); sub printFoo { print "\$foo = $foo\n"; } #### "my" variable $foo masks earlier declaration in same scope at noname.pl line 8. Use of uninitialized value in concatenation (.) or string at noname.pl line 14. $foo = $foo = 2