2011-10-08 42 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