On Fri, Nov 02, 2001 at 03:41:02PM -0500, Jeff 'japhy' Pinyan wrote:
> On Nov 2, Paul Johnson said:
> 
> >3.  Currently, Perl exhibits some surprising behaviour in certain
> >    situations when a named subroutine is being used as a closure.  In
> >    practice, Perl does not properly close named subroutines.  Most
> >    people holding an opinion consider this a bug, although there is not
> >    general consensus, and it is difficult to fix anyway.  There are no
> >    such caveats when using anonymous subroutines as closures.
> 
> What are the problems with named subroutines being used as closures?
> Could you provide some test cases?

Probably not the most suitable subject for a beginners list, but for
those following along at home, what does this output?

[ filter this message through perl -x ]

#!/usr/bin/perl

{ my $a = "foo"; sub foo {     sub { $a } } }
{ my $a = "bar"; sub bar { $a; sub { $a } } }

print foo()->(), "\n";
print bar()->(), "\n";

__END__

Congratulations if you got it right.  To prove it wasn't just a lucky
guess, explain why :-)

> >4.  Ideally, I would like to see both Perl and its documentation patched
> >    such that named subroutines can be safely used as closures.  There
> >    are probably but a handful of people capable of doing that, and so
> >    far it has not been done.
> 
> We'll see.

I'll keep an eye out for your patch ;-)

-- 
Paul Johnson - [EMAIL PROTECTED]
http://www.pjcj.net

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to