($test) = (@test);
$test = @test;
在变量周围有一个括号,它会占据数组的第一个元素。我无法找到阵列周围支架的任何信息。
答案 0 :(得分:14)
($test) = (@test);
这会将@test
内的值分配给仅包含$test
的变量列表。因此$test
将包含@test
的第一个元素。那叫做列表上下文。您也可以省略@test
附近的括号。
my @test = ('a', 'b');
my ($test) = @test; # 'a'
这也常用于将函数的参数分配给变量。以下内容将为函数分配前三个参数,并忽略后面的任何其他参数。
sub foo {
my ($self, $foo, $bar) = @_;
# ...
}
您也可以跳过中间的元素。这也是有效的。此处不会分配bar
值。
my @foo = qw(foo bar baz);
(my $foo, undef, my $baz) = @foo;
$test = @test;
这会强制@test
进入标量上下文。标量上下文中的数组返回元素的数量,因此$test
将成为整数。
my @test = ('a', 'b');
my $test = @test; # 2
您可以在perldata中了解有关上下文的更多信息。