3

配列と、その配列への参照を次のように宣言しました。

my @array = (1, 2, 3, 4);
my $aref = \@array;

今、配列名と参照名を使用して、配列を逆にしようとしています。

print reverse @array, "\n";
print reverse @{$aref}, "\n";

これは正常に機能しており、どちらの場合も逆の配列を出力しています: -

4321
4321

ただし、同じ行に逆を印刷しようとすると、奇妙な結果が得られます: -

print reverse @array, reverse @{$aref}, "\n";

今、私はこの出力を得ました: -

1234
4321

そして、間に改行を追加すると: -

print reverse @array, "\n", reverse @{$aref}, "\n";

私はこの出力を得ました: -

1234

4321

したがって、ご覧のとおり、2 つの問題があります。

  • 1つ目、名前を使用しても配列が逆になりません
  • 第 2 に、2 つの逆配列の間に余分な改行が出力されます。

この動作が理解できません。なぜこれが起こっているのでしょうか。また、関数のドキュメントreverseを調べて、この動作について言及されているかどうかを確認しましたが、食事はしませんでした。ここで何が起こっているのか誰か説明できますか?

4

1 に答える 1

6
reverse @digits, reverse @$digits, "\n"

意味

reverse(@digits, reverse(@$digits, "\n"))

あなたがしたい

reverse(@digits), reverse(@$digits), "\n"

または単に

reverse(@$digits, @digits), "\n"
于 2012-10-31T08:10:33.273 に答える