Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

Re^3: cross scope gotos?

by LanX (Bishop)
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();


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

Replies are listed 'Best First'.
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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://833032]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (3)
As of 2018-03-18 22:05 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (231 votes). Check out past polls.