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:
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....#!/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
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
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Unusual Closure Behaviour
by BrowserUk (Patriarch) on Sep 12, 2015 at 23:55 UTC | |
by shmem (Chancellor) on Sep 13, 2015 at 09:14 UTC | |
Re^2: Unusual Closure Behaviour
by Anonymous Monk on Sep 12, 2015 at 23:24 UTC | |
by Anonymous Monk on Sep 13, 2015 at 05:27 UTC |
In Section
Seekers of Perl Wisdom