Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re: Unusual Closure Behaviour

by Abigail (Deacon)
on Jul 13, 2001 at 14:26 UTC ( #96339=note: print w/ replies, xml ) Need Help??

in reply to Re: Re: Unusual Closure Behaviour
in thread Unusual Closure Behaviour

Well, technically what is happening is not violating Camel III. See, it *does* get its own scratchpad, which can be quickly checked by:

#!/opt/perl/bin/perl -w use strict; sub foo; sub foo { return unless $_ [0]; my $x if 0; print ++ $x, " "; foo $_ [0] - 1; } foo 1; print "\n"; foo 2; print "\n"; foo 3; print "\n"; foo 4; print "\n"; __END__ 1 2 1 3 2 1 4 3 2 1
Scary, isn't? When the subroutine recurses, it notices there is still a reference to $x and hence it will create a new scratchpad. But when there is no reference, it will reuse an old scratchpad....

I do agree that using my in this way doesn't tend to lead to well understood code. I wouldn't go as far as to say it's never useful, but such cases will be very rare and it's not a technique I would teach in my classes.

-- Abigail

Comment on Re: Unusual Closure Behaviour
Select or Download Code

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://96339]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (5)
As of 2015-09-01 22:07 GMT
Find Nodes?
    Voting Booth?

    My preferred temperature scale is:

    Results (50 votes), past polls