4

できればグーグルで検索したいのですが、正直なところ、何を検索すればよいかわかりません (シンボルを多用する言語に固有の問題です)。

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

私の推測では、それ$aSvnPairは 4 つの値の配列であり (この場合、変数の名前は非常に不適切です!)、これは特定の変数 ID に分割しているだけです...?

4

3 に答える 3

10

それはリストの割り当てにすぎません。RHS の最初の値は、LHS の最初の変数に割り当てられます。つまり

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

と同じです

$aSvnRemote  = $aSvnPair->[0];
$aSvnLocal   = $aSvnPair->[1];
$aSvnRef     = $aSvnPair->[2];
$aSvnOptions = $aSvnPair->[3];
于 2012-11-16T01:18:49.473 に答える
6

変数$aSvnPairは配列への参照です。シジルを追加する@と、配列が参照されます。この例では、配列がアンパックされ、その要素が右側の変数に割り当てられます。

何が起こっているかの例を次に示します。

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

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

この操作の後、次のようになります。

$aSvnRemote  = "foo";
$aSvnLocal   = "bar";
$aSvnRef     = "baz";
$aSvnOptions = "xyxxy";
于 2012-11-16T01:16:26.790 に答える
1

$aSvnPair配列への参照である必要があるため、配列@{$aSvnPair}を逆参照します。(「参照」は Perl のポインターに相当します。)

このステートメントは、この配列の値を左側の 4 つの変数に順番に割り当てます。

いくつかの例については、このチュートリアルを参照してください: Perl での逆参照

于 2012-11-16T01:13:57.763 に答える