Perl foreach seems to have its own scope created for each
loop and then the closure snaps the current scope.
The following, code without the foreach code does 444,
my $i;
$i = 0;
push(@flist, sub {$i * $_[0]});
$i = 1;
push(@flist, sub {$i * $_[0]});
$i = 2;
push(@flist, sub {$i * $_[0]});
Python must behave this way, no per loop scope.
But it let me ask myself (and the monks in fact) why
the following code does 024?
my $i;
foreach $i (0 .. 2) {
push(@flist, sub {$i * $_[0]});
}
Does not my define the scope and then putting it
before the loop should not make it apply on the loop?
Note: lisp can behave both ways, and maybe even more,
one may not compare lisp with javascript:)