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")不会返回true

最佳答案

阅读perllexwarn



如果我正确理解它,则意味着函数(enabledwarnif)仅适用于特定于模块的警告,不适用于标准类别。 (文档中“有”之前可能缺少“那个”。)

更新:似乎标准类别也可以工作,但仅在模块中:

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();

10-08 13:10