任何关闭'使用模块'生成的警告的方法Perl中的声明

时间:2014-12-18 22:06:06

标签: perl

我目前在Perl脚本中使用XML::LibXML模块。我们当前在我们的机器上使用的XML::LibXML模块是针对较新版本的libxml2库编译的,而use语句会生成以下警告:

Warning: XML::LibXML compiled against libxml2 20708, but runtime libxml2 is older 20706

警告不会影响我的脚本的性能。我已经和我的主管谈过了,她说我们目前的目的可以完全忽略这个错误。有没有办法暂时关闭此警告而不关闭所有警告?我尝试将use语句括在代码块{}中,并使用no warnings;关闭警告,但我仍然收到警告。

1 个答案:

答案 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”警告。