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

Checking return context, beyond wantarray()

by shemp (Deacon)
on Jul 14, 2004 at 20:17 UTC ( [id://374423]=perlquestion: print w/replies, xml ) Need Help??

shemp has asked for the wisdom of the Perl Monks concerning the following question:

I was just wondering if there is a way to tell if something is expected back from a function call. Let me demonstrate:
# CASE 1 my $value = do_something(...); # CASE 2 do_something(...)
So CASE 1 is what i mean by the call is expecting something back, and CASE 2 is not expecting anything back.

I know of no way to detect this - wantarray() tests for something different. There are probably a number of convoluted subtleties about why this cannot be done, but i have some use for it - mainly for code transition debugging, but i could see other uses for it...

Thanks much.

Replies are listed 'Best First'.
Re: Checking return context, beyond wantarray()
by mifflin (Curate) on Jul 14, 2004 at 20:21 UTC
    Perl Cookbook 10.6 says...
    if (wantarray()) { # list context } elsif (defined wantarray()) { # scalar context } else { # void context }
Re: Checking return context, beyond wantarray()
by ccn (Vicar) on Jul 14, 2004 at 20:21 UTC
    wantarray returns
    • undef value in void context (your CASE 2)
    • true in list context
    • defined false in scalar context

    see perldoc -f wantarray

Re: Checking return context, beyond wantarray()
by iburrell (Chaplain) on Jul 14, 2004 at 20:21 UTC
    wantarray will return undef if the function is called in void context, when the caller is not expecting a value.
Re: Checking return context, beyond wantarray()
by rjbs (Pilgrim) on Jul 14, 2004 at 20:45 UTC
    I suggest you stick with the answers from the other monks -- look more closely at wantarray. However, for when you're feeling goofy (or just need something strange), look at Want.
    rjbs
Re: Checking return context, beyond wantarray()
by shemp (Deacon) on Jul 14, 2004 at 20:36 UTC
    Thanks much. I guess i thought i knew more than i did about wantarray(), and didnt re-read carefully...flame away

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (4)
As of 2024-04-25 07:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found