Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

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

by btrott (Parson)
on Apr 19, 2000 at 00:54 UTC ( #7973=note: print w/ replies, xml ) Need Help??


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

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. CGI.pm, for example.


Comment on RE: RE: Number of times I've used goto in Perl
Download Code
RE: RE: RE: Number of times I've used goto in Perl
by turnstep (Parson) on Apr 19, 2000 at 01:48 UTC
    Ok, perhaps the question should read: "How many times have you inserted the 'goto' keyword into one of your scripts?" CGI.pm 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: sigtrap.pm, autouse.pm, and (oh no!) even good old Carp.pm 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 Carp.pm 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 Carp.pm slide, too. :)

      BTW, I like the perlfunc entry for goto:

      goto - create spaghetti code
        OK, I'll let Carp slide as well. :) (Is this thread nested enough yet?)
      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?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (6)
As of 2015-07-05 13:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (67 votes), past polls