你应该使用’||’或低优先级“或”在报告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! 这就是为什么有些人喜欢或控制结构.带括号,没有区别. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |