in reply to Lexicals in if() scope gotcha!
Update: This node is based on a mistake, the statements below are false. See Re: Re: Lexicals in if() scope gotcha!.
I fell through this trap when I wrote something like this:
and I got a warning for redefining $n.for my $n (1..256) { .... do something .... } for my $n (1..32) { ... do sthg else ... }
The difference is that as for localizes the looping variable (even if it's not my, but a global), it's just stupid to have it outside the loop's scope. It might be useful to access it after the loop when you're writing a for(;;) loop or an if() conditional.
While this is a bit counter-intuitive for me too, it does have some logic. Perl is just not C++ (where you can put a declaration in the first argument of for(;;;)).
In Section
Meditations