Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery

Re: Is it evaluated in scalar or list context?

by Athanasius (Chancellor)
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 (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,

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1014248]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (7)
As of 2018-06-19 12:54 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (114 votes). Check out past polls.