in reply to my Scope Pop Quiz

Hi Mike... I see you beat me to posting this :-)

I assert that this should be considered a bug in strict, considering both the documentation that the behavior is undefined, and that B::Deparse says:

% perl -MO=Deparse -Mstrict -le 'my $rv = 42 for (1); print $rv' + BEGIN { $/ = "\n"; $\ = "\n"; } use strict 'refs'; foreach $_ (1) { my $rv = 42; } print $rv; -e syntax OK

but

% perl -MO=Deparse -Mstrict -le 'foreach (1) { my $rv = 42 } ; print $ +rv' Global symbol "$rv" requires explicit package name at -e line 1. -e had compilation errors. BEGIN { $/ = "\n"; $\ = "\n"; } use strict 'refs'; foreach $_ (1) { my $rv = 42; } print ${'rv'};