Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: two + 2 not equal 4!

by toolic (Bishop)
on Jul 24, 2010 at 02:09 UTC ( #851103=note: print w/ replies, xml ) Need Help??


in reply to two + 2 not equal 4!

Tip #6 from the Basic debugging checklist: use B::Deparse to see if your code really is what you think it is:

$ perl -MO=Deparse two.pl BEGIN { $^W = 1; } sub two { use strict 'refs'; 2; } use strict 'refs'; printf "two + 2 = %d\n", two(2);

So, two + 2 is interpreted as two(2). Instead of evaluating your function, then adding 2, perl treats everything after your function call as a LIST of arguments when you omit the parentheses. From perlsub:

2. NAME LIST; # Parentheses optional if predeclared/imported.

While it is legal syntax to omit the parentheses on function calls, it is a good practice to use them, even if your function does not need arguments:

printf "two + 2 = %d\n",two() + 2;

As a side note, your code would render better if you replace your "pre" tags with "code" tags: Writeup Formatting Tips


Comment on Re: two + 2 not equal 4!
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (8)
As of 2015-07-07 05:54 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 (87 votes), past polls