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演算子'または'を常に使用する必要があると教えられていました。
この本をさらに見ると、同じロジックを使用している他の例がたくさんあります。
ルールや優先順位を変更しましたか?
または'||'の処理です および'または'はPerlの新しいバージョンで変更されましたか?(残念ながら、レガシーコードのために5.6.1 atmに溶接されています)。