Perlで「Possible precedence issue with control flow operator」という警告の対処

Perlで「Possible precedence issue with control flow operator」という警告の対処

Posted at April 22,2016 12:03 AM
Tag:[Perl, TroubleShooting]

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;
関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)