what I think you're getting at is that if a local variable isn't declared within any existing block, then it will treat the current file as a block.
That's not my point at all. Reread what I've written and see my other replies in this thread.
The first opening curly brace to the closing curly brace of a "for" loop is a block.
Yes, so you have to put the stuff that should be declared for it outside it, otherwise it will be declared
in it, and that would be wrong, because what wouldn't declare something for the whole block.
As for the
local ($1, $2) = ($1, $2); issue: Yes, is "works", but it doesn't do what you want. Try this:
'a' =~ /(.)/; local $1 = 'b'; print $1. It prints 'a' and not 'b'. Experiment some with
Devel::Peek and you'll see why doing "local $1 = $1" doesn't do what you want.
-Anomo