$\="\n"; our $foo; sub f { $foo++ } my ($a,$b,$c)=(0)x3; for $foo ($a,$b,$c) { f(); # increments $a,$b,$c } print ($a,$b,$c); #: 111 for my $foo ($a,$b,$c) { f(); # nada } print ($a,$b,$c); #: 111 for my $x ($a,$b,$c) { local $foo=$x; f(); # nada } print ($a,$b,$c); #: 111 { my $foo; sub g { $foo++ } for $foo ($a,$b,$c) { g(); # nada (irritatingly) } print ($a,$b,$c); #: 111 }