Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
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 goofing around in the Monastery: (5)
As of 2024-04-19 16:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found