I played around with this a while ago, but not in any great depth. As far as I can tell, it's possible to declare a sub inside another sub block, but any named subs you declare are globally accessible symbols.
If you want a truly local sub, your best bet is probably to build a closure lexically-scoped anonymous sub (thanks revdiablo):
sub foo {
this;
that;
my $bar = sub {
# ...
}; # EDIT: this semi needs to be here
if(cond) {
$bar->();
} else {
for (a loop) {
something based on $_;
$bar->();
}
}
}
It's cruftier than a local named sub, but it should do the trick.
--
F
o
x
t
r
o
t
U
n
i
f
o
r
m
Found a typo in this node? /msg me
% man 3 strfry