Perlで「Possible precedence issue with control flow operator」という警告の対処
小粋空間 » Programming Language » Perl » Perlで「Possible precedence issue with control flow operator」という警告の対処
Perlで「Possible precedence issue with control flow operator」という警告の対処方法を紹介します。
1.問題点
Perlプログラムを実行したときに次のような警告が表示されました。
C:¥>perl foo.pl
Possible precedence issue with control flow operator at C:¥foo.pl line 100.
foo.plの100行目は次のようなコードです。
return $plugin->load($html) or die $plugin->err;
2.原因
「Possible precedence issue with control flow operator(フロー制御演算子の優先度問題)」は、Perlバージョン5.20.0で新しく追加された警告です。
perl5200delta - perl v5.20.0 での変更点 - perldoc.jp
この仕様追加により下記の構文で警告が表示されるようになったのが原因です。
sub { return $a or $b; }
100行目がこの警告に該当するコーディングになっていたようです。
3.対処
"return $a"全体をカッコで括ればこの警告は表示されなくなります。
sub { ( return $a ) or $b; }
100行目は次のように変更すれば警告が表示されなくなります。
( return $plugin->load($html) ) or die $plugin->err;