in reply to Re^3: will you explain what's going on?
in thread will you explain what's going on?
However, changing it like so:{ my $q; BEGIN { # runs at compile time when the outer block hasn't been entered $q = 42; } print $q; # prints 42 }
shows that it does get restored to undef at the end of the block. Getting back to the original question in this thread, modifying it:for (0..1) { my $q; BEGIN { # runs at compile time when the outer block hasn't been entered $q = 42; } print $q || "undef"; # prints 42undef }
shows that keeping my from executing at runtime suppresses this clearing at the end of the block.our $q = 54; # never actually used for (0..1) { my $q if 0; BEGIN { # runs at compile time when the outer block hasn't been entered $q = 42; } print $q || "undef"; # prints 4242 }
|
|---|