In
Perl, my is an
adjective modifying a newly-referenced
variable. It causes the variable named to be lexically local to the surrounding
BLOCK, instead of being
global as is the default.
For instance, if you read a line into a new variable $line as such, the variable will be global:
$line = <STDIN>;
In order to cause this to be a local variable instead, you must do this:
my $line = <STDIN>;
Note that my has a completely different effect from the (somewhat confusingly-named) adjective
local. my causes the modified variable to go out of
lexical scope at the end of the BLOCK. local causes an otherwise
global variable to carry a
temporary local value for the remainder of the BLOCK.
You probably want to be using my, not local, so you get all the scope checking featurefulness.