For up to date information on Perl 6 you should look at the Synopsis.
To summarize the current state, for just takes a block and feeds as many scalars as needed into that block.
The block can either be a "pointy" block:
for @list -> $a {
# here $a is local'ized in the perl 5 sense
}
Or you can use the "weird scoping" twigil for placeholder arguments:
for @list {
say $^a; # $^a is only available in this block
}
I think that just reusing a lexical variable if there is one available doesn't fit very will into the current concept of blocks and captures.
Perhaps this is one of the cases where weird/unusal scoping deserves its own twigil:
my $a;
for @list -> $=a {
# $=a is the "reused" version of $a
}
# here $a has the last value of $=a
I still don't know how much effort that is, how well it fits into the current specs, and if it's worth the trouble. But it's an interesting idea ;-)
|