你应该使用’||’或低优先级“或”在报告Perl中的错误时?

前端之家收集整理的这篇文章主要介绍了你应该使用’||’或低优先级“或”在报告Perl中的错误时?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在阅读最新版本的 The Camel Book时,我受到以下p522代码片段的冲击:
use Fcntl ":flock";
eval {
    local $SIG{ALRM} = sub { die "alarm clock restart" };
    alarm 10;               # schedule alarm in 10 seconds
    eval {
        flock(FH,LOCK_EX)  # a blocking,exclusive lock
            || die "can't flock: $!";
    };
    alarm 0;                # cancel the alarm
};
alarm 0;               # race condition protection
die if $@ && $@ !~ /alarm clock restart/; # reraise

我被教导你应该总是使用低优先逻辑OR运算符’或’优先于逻辑OR运算符’||’.

在这本书中进一步看,我看到很多其他使用相同逻辑的例子.

规则或优先级别有所改变吗?

或者是处理’||’和“or”在以后版本的Perl中有所改变? (不幸的是,由于遗留代码,我们焊接到5.6.1 atm).

解决方法

||的优先级还是没有改变.使用||如果你没有在功能属性周围使用括号,那么die会有点危险,考虑一下
flock FH,LOCK_EX || die "can't flock: $!"; # WRONG!

这就是为什么有些人喜欢或控制结构.带括号,没有区别.

猜你在找的Perl相关文章