Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

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

by creamygoodness (Curate)
on Dec 07, 2005 at 22:02 UTC ( [id://515059]=note: print w/replies, xml ) Need Help??


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

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

Replies are listed 'Best First'.
Re^6: What's so bad about &function(...)?
by Perl Mouse (Chaplain) on Dec 08, 2005 at 17:18 UTC
    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://515059]
help
Chatterbox?
and the web crawler heard nothing...

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

      No recent polls found