note
broquaint
<i>> Keep in mind that perl currently doesn't do nested subs</i><br>
Ack, how un-DWIM!
<code>
sub foo {
my $x = "a var in foo()";
sub bar {
print "\$x is - [$x]\n";
}
}
bar();
__output__
$x is - []
</code>
But if we use a closure, all is well with the scope of <tt>$x</tt>
<code>
sub foo {
my $x = "a var in foo()";
return sub {
print "\$x is - [$x]\n";
}
}
foo()->();
__output__
$x is - [a var in foo()]
</code>
I was vaguely aware of the fact that nested subs in perl were broken (i.e scoped to current package, not current sub) and now I know the full extent (but I guess the logic should've followed really). Oh well, not much longer til [http://dev.perl.org|Perl6] anyway ...
<br>
HTH
<p>
broquaint
158590
158607