to expand further on this, please see perlsyn#For-Loops
which means
is the same as this:for (my $i = 1; $i < 10; $i++) { ... }
{ my $i = 1; while ($i < 10) { ... } continue { $i++; } }
now compare the different effects from an inner declaration ($i) and an outer declaration ($x)
use strict; use warnings; # ---------- for c-style my @cfor; for ( my $x = 1 ; $x < 4; $x++ ) { my $i = $x; push @cfor, sub { warn "cfor: \ti=$i \tx=$x" }; } $_->() for @cfor; # ---------- while my @values = 1..3; my @while; my $x; while ( my $i = shift @values ) { $x = $i; push @while, sub { warn "while: \ti=$i \tx=$x" }; } $_->() for @while;
cfor: i=1 x=4 at d:/exp/pm_closure2.pl line 11. cfor: i=2 x=4 at d:/exp/pm_closure2.pl line 11. cfor: i=3 x=4 at d:/exp/pm_closure2.pl line 11. while: i=1 x=3 at d:/exp/pm_closure2.pl line 25. while: i=2 x=3 at d:/exp/pm_closure2.pl line 25. while: i=3 x=3 at d:/exp/pm_closure2.pl line 25.
Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery
FootballPerl is like chess, only without the dice
In reply to Re^2: Closure confusion in Tkx (declarations in loops - inner vs outer)
by LanX
in thread Closure confusion in Tkx
by lbrandewie
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |