in reply to Re^7: Continuations in Perl - Returning to an arbitrary level up the call stack
in thread Continuations in Perl - Returning to an arbitrary level up the call stack
Already demonstrated:No, this example is not about recursion (although there is some).
Nope! Jump-labels only change each time with_return constructs are called to avoid confusion if they are dynamically nested.That's what I told - they change each time you _call_ with_return, not each time you have with_return in code.
Here is example. Try do same with "goto"
use strict; use warnings; use Return::MultiLevel qw/with_return/; sub rec { my ($i, $return) = (@_, undef); $i++; print "i=$i\n"; if ($i == 3) { with_return { my $newreturn = shift; rec($i, $newreturn); }; } if ($i == 5) { $return->() if $return; } if ($i == 7) { return; } rec($i, $return); } rec(0); __END__ $ perl ml.pl i=1 i=2 i=3 i=4 i=5 i=4 i=5 i=6 i=7
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^9: Continuations in Perl - Returning to an arbitrary level up the call stack
by LanX (Saint) on May 19, 2013 at 01:51 UTC | |
by vsespb (Chaplain) on May 19, 2013 at 09:56 UTC | |
by LanX (Saint) on May 19, 2013 at 12:44 UTC | |
by LanX (Saint) on May 20, 2013 at 02:16 UTC | |
by vsespb (Chaplain) on May 20, 2013 at 09:03 UTC | |
| |
by vsespb (Chaplain) on May 19, 2013 at 13:05 UTC | |
by LanX (Saint) on May 19, 2013 at 13:12 UTC |