10

perllexwarnでは、設定可能なすべての警告が定義されています。

しかし、ここでは、現在有効にしている警告を出力する方法については何も説明していません。

例えば:

use strict;
use warnings;

print warnings::enabled->pretty_print(); #fictional...

それはどのように可能ですか?

例:

use strict;
use 5.012;
use warnings;

my $aaa;
say "$aaa";

say warnings::enabled("uninitialized") ? "yes" : "no";

上記は次のように出力されます。

Use of uninitialized value $aaa in string at y line 6.

no

そのため、「初期化されていない」警告カテゴリは「設定」されています。これは、警告が出力されますが、warnings::enabled("uninitialized")not が返されるためtrueです。

4

1 に答える 1

7

perllexwarnを読む

...モジュールの作成者に役立つ関数。これらは、モジュール固有の警告を呼び出し側モジュールに報告する場合に使用され、「警告」プラグマを介して警告が有効になっています。

私が正しく理解していれば、関数(enabledwarnif)はモジュール固有の警告に対してのみ機能し、標準のカテゴリに対しては機能しないことを意味します。(ドキュメントの「has」の前に「that」が欠落している可能性があります。)

更新:標準のカテゴリも機能するようですが、モジュール内でのみ機能します。

package MY;
use warnings::register;
sub S {
    my $x;
    print $x, "\t";
    print warnings::enabled("uninitialized"),"\n";
}

package main;
use warnings;
MY::S();
no warnings;
MY::S();
于 2012-06-17T22:24:28.107 に答える