($test) = (@test);
$test = @test;
在變量周圍有一個支架,它將緩衝陣列的第一個元素。我無法找到任何有關陣列周圍支架的信息。
($test) = (@test);
$test = @test;
在變量周圍有一個支架,它將緩衝陣列的第一個元素。我無法找到任何有關陣列周圍支架的信息。
($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閱讀更多有關內容。
可能會補充一點,這不是一個僥倖:許多Perl表達式返回不同的結果,具體取決於關於他們是否在列表上下文中。例如。這就是爲什麼我的$ match = $ var =〜/ con(。*)text /'不會在'$ match'中給你'$ 1'的值,而'my($ match)= $ var =〜/ con(。*)text /'會。 – reinierpost
請參閱[小型教程:標量與列表賦值運算符](http://www.perlmonks.org/?node_id=790129) – ikegami