在Perl中,($ a,$ b,$ c)= @ray是什么意思?

时间:2012-11-16 01:10:37

标签: perl syntax

如果可以,我会谷歌,但老实说,我不知道要搜索什么(符号繁重语言的固有问题)!

($aSvnRemote, $aSvnLocal, $aSvnRef, $aSvnOptions) = @{$aSvnPair};

我的猜测是$aSvnPair是一个包含4个值的数组(在这种情况下,它是一个命名非常差的变量!),这只是将它分成特定的变量标识......?

3 个答案:

答案 0 :(得分:10)

它只不过是一个列表赋值。 RHS的第一个值分配给LHS的第一个var,依此类推。这意味着

($aSvnRemote, $aSvnLocal, $aSvnRef, $aSvnOptions) = @{$aSvnPair};

相同
$aSvnRemote  = $aSvnPair->[0];
$aSvnLocal   = $aSvnPair->[1];
$aSvnRef     = $aSvnPair->[2];
$aSvnOptions = $aSvnPair->[3];

答案 1 :(得分:6)

变量$aSvnPair是对数组的引用。添加@ sigil会导致引用该数组。在这个例子中,数组被解包,它的元素被分配给右边的变量。

以下是正在发生的事情的一个例子:

$aSvnPair= [ qw(foo bar baz xyxxy) ];

($aSvnRemote, $aSvnLocal, $aSvnRef, $aSvnOptions) = @{$aSvnPair};

完成此操作后,您将获得以下内容:

$aSvnRemote  = "foo";
$aSvnLocal   = "bar";
$aSvnRef     = "baz";
$aSvnOptions = "xyxxy";

答案 2 :(得分:1)

$aSvnPair应该是对数组的引用,因此@{$aSvnPair}取消引用它。 (“引用”是指针的Perl等价物。)

然后,语句按顺序将此数组的值分配给左侧的四个变量。

有关示例,请参阅本教程:Dereferencing in perl

相关问题