From: Dave Mitchell [mailto:davem@fdgroup.co.uk] > Ken Fox <kfox@vulpes.com> wrote: > > > You're speaking in Perl implementation terms. I've already told you > > that if Perl acts the way you say it does, then Perl has buggy > > closures. You don't need to explain a bug to know that one exists! > > Okay, to humour me for a mo', what should the following 2 examples > output if Perl were doing the "right" thing? > > > sub pr { print $_[0] || 'undef', "\n" } > > { my $x = 'X'; sub f { $F = sub {pr $x} }} > f(); $F->(); > > { my $y = 'Y'; sub g { pr $y; $G = sub {pr $y} }} > g(); $G->(); X Y Y I'm hardly an authority, but a closure should reflect the environment at runtime... not compile You forgot the other example that someone raised: { my $x = 'X'; *h = sub { $H = sub {pr $h} }} h(); $H->(); Which prints: ZThread Previous | Thread Next