Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re^3: cross scope gotos?

by LanX (Canon)
on Apr 06, 2010 at 12:36 UTC ( #833032=note: print w/ replies, xml ) Need Help??


in reply to Re^2: cross scope gotos?
in thread cross scope gotos?

Maybe this code makes it clearer:

sub jump { print "in\n"; goto BACK }; sub jump2 {goto &jump } sub cont { for $i (0..1) { for $j ("a".."b") { print "$i,$j\t"; jump2(); # works #goto &jump; # fails BACK: } } } cont();

OUTPUT

0,a in 0,b in 1,a in 1,b in
in simple words:

It's not only possible to jump within the same scope, but also into the scope of previous ("outer") call frames.

(Pity I thought I found an easy pattern for continuations...)

Cheers Rolf


Comment on Re^3: cross scope gotos?
Select or Download Code
Re^4: cross scope gotos?
by Anonymous Monk on Apr 06, 2010 at 13:20 UTC
    No serious application whatsoever for this nonsense...
      > No serious application whatsoever for this nonsense...

      sigh, YOU again...

      you may use it for

      1. easily leaving deeply nested recursions, without the need to return step by step
        perl -e ' my $x; sub rec { goto STOP if ++$x>10; print $x; rec()};rec();STOP:' 12345678910
      2. easily defining specific labels and jump-commands in DSLs (Domain Specific Languages) and encapsulating all the logic within the subs.

        For instance if you want to emulate and/or compile an assembler language you can easily implement it as valid perl-code then easily using Perl as macro language:

        use Assembler::6502; # fictitious module # implementing Mnemonics as subs MARK: LDX 10; ADD 3; macro1(); # Perl sub to include/call mnemonics JSR SUB2; JMP MARK; SUB2: ... ... RET

      serious enough?

      Cheers Rolf

      UPDATE: added examples

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (3)
As of 2014-09-23 00:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (209 votes), past polls