Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

What is variable suicide and how can I prevent it?

by faq_monk (Initiate)
on Oct 08, 1999 at 00:27 UTC ( #691=perlfaq nodetype: print w/ replies, xml ) Need Help??

Current Perl documentation can be found at

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" }
    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.

Log In?

What's my password?
Create A New User
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (4)
As of 2015-10-04 08:23 GMT
Find Nodes?
    Voting Booth?

    Does Humor Belong in Programming?

    Results (100 votes), past polls