Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?

RE: Number of times I've used goto in Perl

by IndyZ (Friar)
on Apr 19, 2000 at 00:43 UTC ( #7972=note: print w/ replies, xml ) Need Help??

in reply to Number of times I've used goto in Perl

I think this a a test by vroom to see who deserves their monk status. Anybody who says that they've uses a goto loses 75% of their XP.

Comment on RE: Number of times I've used goto in Perl
Replies are listed 'Best First'.
RE: RE: Number of times I've used goto in Perl
by btrott (Parson) on Apr 19, 2000 at 00:54 UTC
    Actually, if you've ever done much module/OO programming, you've probably used goto quite a lot, particularly if you write AUTOLOAD functions. From perltoot:
    When Perl tries to call an undefined function in a particular package and that function is not defined, it looks for a function in that same package called AUTOLOAD. If one exists, it's called with the same arguments as the original function would have had. The fully-qualified name of the function is stored in that package's global variable $AUTOLOAD. Once called, the function can do anything it would like, including defining a new function by the right name, and then doing a really fancy kind of goto right to it, erasing itself from the call stack.
    As such goto is used in quite a few modules, core or otherwise., for example.
      Ok, perhaps the question should read: "How many times have you inserted the 'goto' keyword into one of your scripts?" and most others simply use the goto as part of the AUTOLOAD feature, so I let them slide....but, glancing through the standard modules, there are some exceptions:,, and (oh no!) even good old use 'goto' as a way of reaching another part of their script. Bleh! I'm still at 'never.'
        Point taken. :)

        But in the case of Carp, my uses goto in the same magical way that it's used in AUTOLOAD:

        goto &longmess;
        The purpose being that this magical goto erases the calling function from the call stack, which is exactly why it's used here: since longmess dumps out a stack trace, we don't want shortmess showing up in the call stack.

        So you should let slide, too. :)

        BTW, I like the perlfunc entry for goto:

        goto - create spaghetti code
        Maybe the question should read "what is the most goto's you've used in a single script/program". I answered "more than ten" even though I rarely use goto, just because I've written so many scripts. Adding a goto is usually better than duplicating code and/or re-arranging a large and complex loop.

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (2)
As of 2015-11-26 21:02 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (707 votes), past polls