On Thu, Nov 23, 2006 at 05:09:17PM -0500, Buddha Buck wrote: > The way I see it, everything which defines a separate lexical scope (a > block, a function, a closure. I forget if in "my $a; ... ; my $b" $b > is visible in the ellipsis. If not, then a "my" statement also > defines a separate lexical scope) effectively creates a separate pad, > at run-time, when it is entered.
"my $b" should not be visible in the ellipsis (it is in pugs, and that's a bug). However, there's no need for each "my" to define a separate scope, because the invisibility of $b in the block prior to its declaration is only required for compile time processing. If you hide a reference to $b in an eval string, the spec explicitly allows the runtime to use the lexical $b defined later in the block.