加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 21:13:55 所属栏目:大数据 来源:网络整理
导读:在阅读最新版本的 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
在阅读最新版本的 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!

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读