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.