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

Re: Stumped when passing barewords

by diotalevi (Canon)
on Apr 22, 2004 at 12:54 UTC ( #347333=note: print w/ replies, xml ) Need Help??


in reply to Stumped when passing barewords

Doh. If I say it with Devel::Peek I note that the first call to sub2() was compiled when the (*) prototype wasn't known and @_ wasn't coerced into a scalar. The second was compiled when perl expected there to be only a scalar so instead of sub2(@_) you have sub2( scalar @_)

sub2 returns 1 because print() returns 1. This is 100% mundane. You might try saying print print '' to see what I mean.

use Devel::Peek; sub sub1(*) { print STDERR "args(1)\n"; Dump($_) for @_; sub2(@_); } sub sub2(*) { print STDERR "args(2)\n"; Dump($_) for @_; } sub sub3(*) { print STDERR "args(3)\n"; Dump($_) for @_; sub2(@_); } sub1 Bareword; sub3 Bareword; sub2(@{[Bareword]});


Comment on Re: Stumped when passing barewords
Select or Download Code
Re: Re: Stumped when passing barewords
by EvdB (Deacon) on Apr 22, 2004 at 12:57 UTC
    In that case why does this have no effect?
    sub sub2(*) { print "args(2): @_\n"; 0; # <--- change is here. }
    The output is from the print statements, not the return values.
Re: Re: Stumped when passing barewords
by BrowserUk (Pope) on Apr 22, 2004 at 12:58 UTC

    sub2() returns 1, but how is it managing to print out it's own return value?


    Examine what is said, not who speaks.
    "Efficiency is intelligent laziness." -David Dunham
    "Think for yourself!" - Abigail

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (12)
As of 2014-07-31 17:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (249 votes), past polls