2013-06-02 11 views
7

なぜPerlは次のスニペットで適合を投げますか?"@ARGV || = '。';"と書いて何が問題になっていますか?

$ perl -Mstrict -wE '@ARGV ||= ".";' 
Can't modify array dereference in logical or assignment (||=) at -e line 1, near "'.';" 
Execution of -e aborted due to compilation errors. 

それが楽しく

$ perl -Mstrict -wE '@ARGV = @ARGV || ".";' 

を処理している間、私はずっとここに助けperldiag説明が表示されない:

は%S%Sでは変更できません

(F)指示された項目に割り当てることができないか、または 自動インクリメントなどで変更を試みます。


この動作のためのより多くの人に優しい説明がはるかに高く評価されます。

+4

http://stackoverflow.com/questions/4385998/why-doesnt-work-with-arrays –

+0

@mpapec:質問に発行クリスタルクリアになり – Zaid

答えて

4

コード@ARGVは、配列自体とその中の要素数の両方を返すことはできません。@ARGV ||= '.';は意味をなさないものです。 @ARGVを2回、スカラーコンテキスト(要素数を得るために)と左辺値(配列自体を得るために)で2回評価する必要があります。

@ARGV = @ARGV || '.'; 
+0

優秀な答えを見つけてくれてありがとう。ありがとう池上 – Zaid

関連する問題