|Problems? Is your data what you think it is?|
cross scope gotos?by LanX (Chancellor)
|on Apr 06, 2010 at 11:16 UTC||Need Help??|
LanX has asked for the
wisdom of the Perl Monks concerning the following question:
Perl still surprises me, I found this code example in B::CC
produces the output 024
I would never believe that it works because the goto and the label are in different scopes but well...
from goto I can read
... It can be used to go almost anywhere else within the dynamic scope, including out of subroutines,...
So what exactly is a "dynamic scope" here? Does it mean that the label NUMBER is kind of a localized global, which is visible in called subs?
And jumping out of the sub is guarantied to clean the call stack (such avoiding any overflows)?
So please explain why a normal call works, but not the out-commented goto call (which tries to avoid the superfluous call frame)?
OUTPUT1 0,a 1,a 2,a 3,a