in reply to Re^11: 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
I'm bored ... voila!
use strict; use warnings; our $restore; sub rec { my ($i) = @_; $i++; print ">> i=$i\n"; if ($i <= 9) { target($i); } goto TARGET if $i > $restore; print "<< i=$i\n"; } sub target{ rec(shift); TARGET: } #--- Tests for $restore (6,3){ print "\n\n","-"x5," Restore at $restore\n"; rec(0); } __END__ ----- Restore at 6 >> i=1 >> i=2 >> i=3 >> i=4 >> i=5 >> i=6 >> i=7 >> i=8 >> i=9 >> i=10 << i=6 << i=5 << i=4 << i=3 << i=2 << i=1 ----- Restore at 3 >> i=1 >> i=2 >> i=3 >> i=4 >> i=5 >> i=6 >> i=7 >> i=8 >> i=9 >> i=10 << i=3 << i=2 << i=1
Again less and clearer code, and w/o generating dynamic labels with eval!
Cheers Rolf
( addicted to the Perl Programming Language)
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^13: Continuations in Perl - Returning to an arbitrary level up the call stack
by vsespb (Chaplain) on May 20, 2013 at 09:03 UTC | |
by LanX (Saint) on May 20, 2013 at 12:01 UTC | |
by derby (Abbot) on May 20, 2013 at 12:13 UTC | |
by LanX (Saint) on May 20, 2013 at 12:15 UTC |