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, |
|
|---|