我目前在Perl脚本中使用XML::LibXML
模块。我们当前在我们的机器上使用的XML::LibXML
模块是针对较新版本的libxml2
库编译的,而use语句会生成以下警告:
Warning: XML::LibXML compiled against libxml2 20708, but runtime libxml2 is older 20706
警告不会影响我的脚本的性能。我已经和我的主管谈过了,她说我们目前的目的可以完全忽略这个错误。有没有办法暂时关闭此警告而不关闭所有警告?我尝试将use
语句括在代码块{}
中,并使用no warnings;
关闭警告,但我仍然收到警告。
答案 0 :(得分:3)
您可以通过设置warn
来禁止警告,即使是那些因明确调用$SIG{__WARN__}
功能而发出的警告。
一个简单的工作示例(由于ysth的评论而改进):
mod.pm:
package mod;
sub method {
print "This is mod::method\n";
}
warn "WE DO NOT WANT THIS WARNING\n";
1;
foo.pl:
#!/usr/bin/perl
use strict;
use warnings;
BEGIN {
local $SIG{__WARN__} = sub {};
require mod;
mod::->import();
}
warn "Normal warnings work\n";
mod::method();
输出结果为:
Normal warnings work
This is mod::method
我已经确认,评论$SIG{__WARN__}
的设置会导致出现“DO NOT WANT”警告。