我会谷歌它,如果我可以但老实说我不知道要搜索什么(与符号沉重的语言固有问题)!
($aSvnRemote, $aSvnLocal, $aSvnRef, $aSvnOptions) = @{$aSvnPair};
我的猜测是$aSvnPair
是4个值(在这种情况下,这是一个非常糟糕命名变量!),这是刚刚拆分为特定变量的身份数组...?
我会谷歌它,如果我可以但老实说我不知道要搜索什么(与符号沉重的语言固有问题)!
($aSvnRemote, $aSvnLocal, $aSvnRef, $aSvnOptions) = @{$aSvnPair};
我的猜测是$aSvnPair
是4个值(在这种情况下,这是一个非常糟糕命名变量!),这是刚刚拆分为特定变量的身份数组...?
这只不过是一个列表分配更多。 RHS的第一个值被分配给LHS的第一个变量,依此类推。这意味着
($aSvnRemote, $aSvnLocal, $aSvnRef, $aSvnOptions) = @{$aSvnPair};
相同
$aSvnRemote = $aSvnPair->[0];
$aSvnLocal = $aSvnPair->[1];
$aSvnRef = $aSvnPair->[2];
$aSvnOptions = $aSvnPair->[3];
$aSvnPair
应该是参考数组所以@{$aSvnPair}
取消引用它。 (一个“参考”是一个指针的Perl等价物。)
该语句然后按顺序将该数组的值分配给左侧的四个变量。
参见本教程的一些例子:Dereferencing in perl
可变$aSvnPair
是数组的引用。添加@
sigil会导致数组被引用。在这个例子中,数组是解压缩的,它的元素被分配给右边的变量。
这里是正在发生的例子:
$aSvnPair= [ qw(foo bar baz xyxxy) ];
($aSvnRemote, $aSvnLocal, $aSvnRef, $aSvnOptions) = @{$aSvnPair};
此操作后,您会收到以下:
$aSvnRemote = "foo";
$aSvnLocal = "bar";
$aSvnRef = "baz";
$aSvnOptions = "xyxxy";
'@ arr'或'@ {$裁判}',不要紧, “发生了什么”,否则。 – 2012-11-16 01:49:57