2011-06-18 7 views
13

は、私はほとんど常に使用します。「診断を使用する」に問題はありますか? Perlで

use strict; 
use diagnostics; 

私が代わりにuse warnings;hereの「使用診断」を提案し、私はいくつかの負のフィードバックを受けました。だから今私は考えている:

use diagnostics;に問題はありますか?

+0

私は同じ質問をしようとしていました。 :) +1 –

答えて

17

diagnosticsは、warningsのような字句プラグマではありません。代わりに、グローバル$^W変数を設定します(-wフラグのように)。すべてコードの警告、書き込みの可否、書き込みの可否を設定します。それは一種の失礼です。 diagnosticsも生産に使用するのは馬鹿です。私はwarningsを使用して、あなたの説明が必要な場合は、警告をsplainに配管することを推奨します。

9

use diagnosticsは、コードの実行をuse warningsより遅くします。開発中に理解できない旨の警告が表示されたら、スイッチをオンにしても問題ありませんが、完了したらスイッチを切るのが最善です。

+0

+1しかし、まだ警告や診断を出さないコードを書くのは良いです。 ;-) –

8

診断プラグマは開発ツールであり、頻繁に必要としないものです。 、必要に応じてそれを使用します。

$ perl -Mdiagnostics myprog

-M switchは、あなたが戻ってあなたのコードからテスト専用use diagnostics行を削除するために覚えておく必要がないことを意味し、コマンドラインでプラグマを有効にします。

0

まだperlバージョン5.12にアップグレードしていない場合、には特定の警告を隠すバグがあります。バグは(perl512deltaを参照)5.12で修正されています:

診断がもはや範囲内で初期化されていない値の使用 (または フリップ)警告を抑制しません。 [perl#71204]

私がこのバグを認識すると、私は戻って、use diagnostics;のすべてのコードからコメントしました。警告メッセージが表示されたら、一時的にコメントを外しますが、いつも戻ってコメントアウトしてください。

関連する問題