Current Perl documentation can be found at perldoc.perl.org.
Here is our local, out-dated (pre-5.6) version:
Variable suicide is when you (temporarily or permanently) lose the value of a variable. It is caused by scoping through
my()
and
local()
interacting with either closures or aliased
foreach()
interator variables and subroutine arguments. It used to be easy to inadvertently lose a variable's value this way, but now it's much harder. Take this code:
my $f = "foo"; sub T { while ($i++ < 3) { my $f = $f; $f .= "bar"; print $f, "\n" } } T; print "Finally $f\n";
The $f
that has ``bar'' added to it three times should be a
new $f
(my $f
should create a new local variable each time through the loop). It isn't,
however. This is a bug, and will be fixed.