如果可以的话,我会用谷歌搜索它,但老实说,我不知道要搜索什么(符号繁重的语言的固有问题)!
($aSvnRemote, $aSvnLocal, $aSvnRef, $aSvnOptions) = @{$aSvnPair};
我的猜测是这$aSvnPair
是一个由 4 个值组成的数组(在这种情况下,它是一个命名非常糟糕的变量!),而这只是将其拆分为特定的变量身份......?
这只不过是一个列表作业。RHS 的第一个值分配给 LHS 上的第一个 var,依此类推。这意味着
($aSvnRemote, $aSvnLocal, $aSvnRef, $aSvnOptions) = @{$aSvnPair};
是相同的
$aSvnRemote = $aSvnPair->[0];
$aSvnLocal = $aSvnPair->[1];
$aSvnRef = $aSvnPair->[2];
$aSvnOptions = $aSvnPair->[3];
该变量$aSvnPair
是对数组的引用。添加@
印记会导致数组被引用。在这个例子中,数组被解包,它的元素被分配给右边的变量。
这是正在发生的事情的一个例子:
$aSvnPair= [ qw(foo bar baz xyxxy) ];
($aSvnRemote, $aSvnLocal, $aSvnRef, $aSvnOptions) = @{$aSvnPair};
执行此操作后,您将获得以下信息:
$aSvnRemote = "foo";
$aSvnLocal = "bar";
$aSvnRef = "baz";
$aSvnOptions = "xyxxy";
$aSvnPair
应该是对数组的引用,因此@{$aSvnPair}
取消引用它。(“引用”是指针的 Perl 等价物。)
然后,该语句将该数组的值按顺序分配给左侧的四个变量。
有关一些示例,请参阅本教程:在 perl 中取消引用