http://qs321.pair.com?node_id=489932


in reply to Re: Isn't Perl5 ready for C<my sub>?
in thread Isn't Perl5 ready for C<my sub>?

(With all the caveats of local and symboltable hacking, of course.)

The main problem I see with this approach is that it doesn't behave the way we would expect a true lexical sub too. For example, I would expect the following to work:

sub foo { my sub bar { print "42\n"; } return sub { bar() }; } my $s = foo(); $s->();

Of course that won't work with the local trick since you can't have a lexical closure over a locally modified symbol table (as far as I know.) But it would work fine if you used my $bar = sub { print "42\n" }.

I suppose a source filter to convert my sub bar { } to my $bar = sub { } would do the trick, but then you'd have to scan the rest of the block to change bar to $bar->(). Sounds like a real PITA.