in reply to Re: Lexical scope variable is not undef'ed
in thread Lexical scope variable is not undef'ed

That's not true. It's not parsed as if (0) { my $var = ''; }, and it does create a lexical $i (my's compile-time effect).

>perl -le "$::i=q{Pass }; for(1..3){my $i if 0; ++$i; print $::i, $i}" Pass 1 Pass 2 Pass 3 >perl -le "$::i=q{Pass }; for(1..3){ ++$i; print $::i, $i}" 11 22 33

What happens is that the clearing doesn't occur at the end of the scope (my's run-time effect). See Re: Lexical scope variable is not undef'ed.