Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: Is it evaluated in scalar or list context?

by Athanasius (Monsignor)
on Jan 20, 2013 at 04:13 UTC ( #1014248=note: print w/ replies, xml ) Need Help??


in reply to Is it evaluated in scalar or list context?

Hello rnaeye,

my $var = something; # scalar context my ($var) = something; # list context

This is correct, but from the rest of your question it seems you understand this to mean that it is $var which is in first scalar and then list context. Actually, it is something which is evaluated in either scalar or list context. That is, in an assignment, it is the right-hand side which is evaluated in either scalar or list context; the form of the left-hand side determines the context in which the right-hand side is evaluated.

You can use wantarray in a subroutine to see this:

use Modern::Perl; my $var1 = context('a'); my ($var2) = context('b'); say for $var1, $var2; context($var2); sub context { my $c = (defined wantarray) ? (wantarray ? 'list' : 'scalar') : 'void'; say '(', $_[0], '): is in ', $c, ' context'; return wantarray ? @_ : $_[0]; }

which outputs:

14:04 >perl 488_SoPW.pl (a): is in scalar context (b): is in list context a b (b): is in void context 14:08 >

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,


Comment on Re: Is it evaluated in scalar or list context?
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (8)
As of 2014-11-26 03:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (160 votes), past polls