2011-10-08 44 views
2

在我的書,它採用這樣的:Perl && do {last; };

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

是不是for -loop不完整?另外,do有什麼意義,是不是隻是{ ... },還是do在這裏有一定的重要性?

+0

他們「'for'」和「'foreach'」關鍵字完全等同。 – ikegami

回答

6

Perl中有兩種形式的for語句。您在這裏看到的那個經常被寫爲foreach,但forforeach是同義詞。它通常遍歷一個列表,將$_設置爲每個元素。在這種情況下,「列表」是單個值,因此它具有爲循環體設置$_$ARGV[0]的效果。

do需要使塊{ ... }到表達,所以它可以是操作者&&的操作數。 (請參閱如果省略字do會發生什麼。)

(你失蹤分號;我編輯的問題修復)

+0

謝謝你的幫助:-) – rubixibuc

+0

我的問題是「爲什麼?」我認爲你可以重寫這個就好了$ _ = $ ARGV [0]; if(Expression){print「...」;最後}',這可能會更有意義。 – mkb

+0

這只是文體。一個好處是你正在測試的表達式顯然是第一件事情,就像C中的一個case語句。我經常將它用於正則表達式:/ foo =(\ w +)/ && do {$ store { foo} = process_foo($ 1)}; – Alex