在
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
所以“未初始化”警告类别是“set”,因为它会打印一个警告,但是warnings :: enabled(“uninitialized”)不会返回true.
解决方法
阅读
perllexwarn
… functions that are useful for module authors. These are used when you
want to report a module-specific warning to a calling module has
enabled warnings via the “warnings” pragma.
如果我理解正确,这意味着功能(启用,警告)仅适用于特定于模块的警告,而不适用于标准类别. (在文档中的“有”之前可能缺少“该”).
更新:似乎标准类别工作,但只有在一个模块:
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();