http://www.perlmonks.org?node_id=1014231


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

$var1 = something1 ;

On the left of the assignment is a scalar variable. A scalar variable on the left of an assignment cries out, "Give me a scalar(single) value to store!" Similarly, an array variable on the left of an assignment:

@x = something;

...cries out, "Give me a list to store!"

Now look at this code:

use strict; use warnings; use 5.012; my @something = ('a', 'b', 'c'); my $x = @something; my($y) = @something; say $x; say $y; --output:-- 3 a

When $x cries out for a single value, the array provides its length. On the other hand, ($y) is a list, and it cries out for a list--so that list assignment can be performed:

my @something = ('a', 'b', 'c'); my $d; my $e; my $f; ($d, $e, $f) = @something; say $d; say $e; say $f; --output:-- a b c
($d, $e) = @something; say $d; say $e; --output:-- a b
($d) = @something; say $d; --output:-- a
$d = @something; say $d; --output:-- 3
my($s, $t, $u) = @something; say $s; say $t; say $u; --output:-- a b c