2011-10-24 2 views
1
@array = reverse; 
and 
@array = reverse $_; 

どちらも異なります。 @array = reverseは暗黙的に$_を使用しません。 $_を明示的に宣言しなければなりません。これは、デフォルトでは$_が使用されていない非常に奇妙なケースです。バグですか?

+1

考えてみてください。 1つのアイテムを含むリストを逆にすると、何が得られますか? – Schwern

答えて

9

reverse documentationからわかる限り、reverseは配列に作用するので、スカラーではなく@_を使用する必要があります$_

ドキュメントは「reverse()$_を反転させ、スカラーコンテキストで引数なしで使用。」と言います[強調を追加]

$_ = "dlrow ,olleH"; 
print reverse;        # No output, list context 
print scalar reverse;      # Hello, world 
4

公式文書には、Perlの仕様が記載されています。もしPerlがそれがすべきことを言うならば、それはバグではありません。これは言語設計と実装の決定です。

関連する問題