I managed to save a byte while golfing (unrelated, and sorry about stupid links), then wondered why did it work at all. With following SSCCE, the least level of consistency I'd expect is same output for both "for" cases, but hesitate to point which result of the two is correct and must be the same for them all, perhaps "1 2 2 2 1"?
use strict; use warnings; print "map\t"; 1 =~ /1/; map { print "$& "; 2 =~ /2/; print "$& "; } 0, 1; print "$&\n"; print "block\t"; my $n = 1; 1 =~ /1/; { print "$& "; 2 =~ /2/; print "$& "; redo if $n -- }; print "$&\n"; print "foreach\t"; 1 =~ /1/; for (0, 1) { print "$& "; 2 =~ /2/; print "$& "; } print "$&\n"; print "while\t"; my $m = 2; 1 =~ /1/; while ($m --) { print "$& "; 2 =~ /2/; print "$& "; }; print "$&\n"; print "for\t"; 1 =~ /1/; for (my $i = 0; $i <= 1; $i++) { print "$& "; 2 =~ /2/; print "$& "; } print "$&\n"; __END__ map 1 2 1 2 1 block 1 2 1 2 1 foreach 1 2 2 2 1 while 1 2 2 2 1 for 1 2 1 2 1
In reply to Regexp vars localization in blocks by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |