warn && next为什么warn就不显示了[已解决]

warn && next为什么warn就不显示了[已解决]

代码如下:

for(my $i=0;$i<10;$i++) {
  warn "warn" && next;
}


本来是想实现类似这样的语句的,这样就可以不用if了
可能不是什么好的style,不过我只是想知道原因,呵呵

foreach my $file (("a","b")) {
  warn "[I] Info: Working on $file\n";
  my $sb = stat("$file") || (warn "[W] Warn: Unable to do stat query on '$file'.\n $!\n" && next);
# something else here

}


warn返回值是什么?
warn返回1阿,我double check过了
逻辑上看你需要的是 !() || warn

另外要提醒的是=和||的优先级

try
warn "something" and next


QUOTE:
原帖由 churchmice 于 2008-2-10 12:04 发表
try
warn "something" and next

阿,改用and就可以了
现在知道了,原来是&&优先级太高了
于是warn "" && next变成warn ("" && next)
谢谢!

另外也感谢Lonki地提醒,虽然在这里出错的话$sb得到的值已经无关紧要,因为next会在赋值之前进行