perl -we" my $foo = 1; my $foo = 2; " "my" variable $foo masks earlier declaration in same scope at -e line 1. $ perl -Mdiagnostics -we" my $foo = 1; my $foo = 2; " "my" variable $foo masks earlier declaration in same scope at -e line 1 (#1) (W misc) A "my", "our" or "state" variable has been redeclared in the current scope or statement, effectively eliminating all access to the previous instance. This is almost always a typographical error. Note that the earlier variable will still exist until the end of the scope or until all closure referents to it are destroyed.