Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re^4: What's so bad about &function(...)?

by japhy (Canon)
on Dec 07, 2005 at 20:31 UTC ( [id://515028]=note: print w/replies, xml ) Need Help??


in reply to Re^3: What's so bad about &function(...)?
in thread What's so bad about &function(...)?

I made it clear in my original node that I'm not referring to a bare &foo, but rather &foo(...).

Jeff japhy Pinyan, P.L., P.M., P.O.D, X.S.: Perl, regex, and perl hacker
How can we ever be the sold short or the cheated, we who for every service have long ago been overpaid? ~~ Meister Eckhart

Replies are listed 'Best First'.
Re^5: What's so bad about &function(...)?
by creamygoodness (Curate) on Dec 07, 2005 at 22:02 UTC
    I should have elaborated. Here's "what's so bad about &function(...)":

    The ampersand has a very subtle quirk which arises when it is used without parentheses, as illustrated in my previous post.

    The directive "don't use the ampersand" is easy to understand and follow. If you get "bareword" errors, they generally cause catastrophic failure and are thus straightforward to troubleshoot, even for beginners.

    The use of parentheses to group arguments to a subroutine is not enforced by Perl. Usage is all over the place.

    The directive "go ahead use the ampersand, but only with parentheses" is more difficult for a beginner to adhere to, because in the vast majority of cases there is no penalty for omitting the parentheses. When they do finally hit a problem because they forgot the parens, it's not going to be a nice easy bareword crash -- it's going to be a silent killer.

    IMO, it's not reasonable to argue that there's no problem with &function(...) while punting on &function, and since there's a problem with &function, there's a problem with &function(...).

    Feel free to disagree. :)

    --
    Marvin Humphrey
    Rectangular Research ― http://www.rectangular.com
      That sounds to me as very illogical. You are afraid that, for the case of a function taking optional arguments, a beginner who uses & in front of the function name, might forget to use parenthesis? (Note that if the function requires arguments, omitting the parenthesis in combination of using & is a syntax error, and if the function doesn't use arguments, passing in some extras isn't going to hurt)

      Sounds too rare of a problem to get all dogmatic about.

      Perl --((8:>*

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (None)
    As of 2024-04-25 00:35 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      No recent polls found