Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Checking return context, beyond wantarray()

by shemp (Deacon)
on Jul 14, 2004 at 20:17 UTC ( #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.

Comment on Checking return context, beyond wantarray()
Download Code
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 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 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 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
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

Log In?
Username:
Password:

What's my password?
Create A New User
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? | Other CB clients
Other Users?
Others examining the Monastery: (9)
As of 2015-01-26 07:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My top resolution in 2015 is:

















    Results (186 votes), past polls