http://qs321.pair.com?node_id=1205967


in reply to Why is it uninitialized?

I have to admit ignorance of what really happens inside Perl but a small experiment sheds a bit of light on the situation:

use strict; use warnings; my $S4 = "aaa"; sub X { print "<$S4>\n"; return $S4; } for $S4 (1 .. 2) { print "A: <$S4> <", X(), ">\n"; }

which supports the "closure theory", imho.

Update: adding to my experiment as follows

use strict; use warnings; my $S4 = "aaa"; sub X { print "<$S4>\n"; return $S4; } for $S4 (1 .. 2) { print "A: <$S4> <", X(), ">\n"; } $S4 = "bbb"; print "B: <", X(), ">\n";

which seems to confirm the theory that the loop variable is implicitly localized.