2011-10-08 5 views
2

が、それはこのようなものを使用しています。Perl && do {last; };私の本で

for($ARGV[0]) 
{ 
Expression && do { print "..."; last; }; 
... 
} 

は不完全for -loopはありませんか?また、doの要点は{ ... }であることはできませんか、doはここで重要ですか?

+0

彼ら「'for'」と「' foreach'」キーワードは完全に同等です。 – ikegami

答えて

6

Perlには2つの形式のforがあります。ここに表示されているものは、多くの場合、foreachと書かれていますが、forforeachは同義語です。通常、リスト全体を反復し、各要素に$_を設定します。この場合、「リスト」は単一の値であるため、ループ本体に$_$ARGV[0]を設定するという効果があります。

ブロック{ ... }を式にするためには、doが必要です。したがって、&&演算子のオペランドにすることができます。

を(。あなたは言葉doを省略した場合に何が起こるかを参照してください)(そして、あなたはセミコロンを欠落していた。私はそれを修正するために質問を編集した。)

+0

助けてくれてありがとう:-) – rubixibuc

+0

私の質問は "なぜ?"私は '$ _ = $ ARGV [0];でこれをちょうど書き直すことができたと思います。 if(Expression){print "...";最後に} 'それはもっと意味があるかもしれません。 – mkb

+0

それはただの文体です。 1つの利点は、あなたがテストしている式が、Cのcase文のように、行の最初のものであることです。私はしばしばregexpsでそれを使用します:/ foo =(\ w +)/ && do {$ store { foo} = process_foo($ 1)}; – Alex