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

dev*_*os1 4 syntax perl

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

($aSvnRemote, $aSvnLocal, $aSvnRef, $aSvnOptions) = @{$aSvnPair};
Run Code Online (Sandbox Code Playgroud)

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

ike*_*ami 10

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

($aSvnRemote, $aSvnLocal, $aSvnRef, $aSvnOptions) = @{$aSvnPair};
Run Code Online (Sandbox Code Playgroud)

是相同的

$aSvnRemote  = $aSvnPair->[0];
$aSvnLocal   = $aSvnPair->[1];
$aSvnRef     = $aSvnPair->[2];
$aSvnOptions = $aSvnPair->[3];
Run Code Online (Sandbox Code Playgroud)

  • 它不需要具有四个元素的`@ $ aSvnPair`; 它可能有更多(将被忽略)或更少(将一些LHS变量设置为undef). (3认同)

jor*_*anm 6

该变量$aSvnPair是对数组的引用.添加@sigil会导致引用数组.在此示例中,数组已解包,并且其元素已分配给右侧的变量.

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

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

($aSvnRemote, $aSvnLocal, $aSvnRef, $aSvnOptions) = @{$aSvnPair};
Run Code Online (Sandbox Code Playgroud)

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

$aSvnRemote  = "foo";
$aSvnLocal   = "bar";
$aSvnRef     = "baz";
$aSvnOptions = "xyxxy";
Run Code Online (Sandbox Code Playgroud)