你應該使用’||’或低優先順序“或”在報告Perl中的錯誤時?
時,我受到以下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!
這就是為什麼有些人喜歡或控制結構.帶括號,沒有區別.
http://stackoverflow.com/questions/14893161/should-you-use-or-lower-precedence-or-when-reporting-an-error-in-perl