如果可以,我会谷歌,但老实说,我不知道要搜索什么(符号繁重语言的固有问题)!
($aSvnRemote, $aSvnLocal, $aSvnRef, $aSvnOptions) = @{$aSvnPair};
我的猜测是$aSvnPair
是一个包含4个值的数组(在这种情况下,它是一个命名非常差的变量!),这只是将它分成特定的变量标识......?
答案 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