Module :: Install需要并跳过版本

时间:2015-11-21 17:38:00

标签: perl dependencies

我对Perl应用程序有以下要求

requires 'Net::DNS'                      => 0;

现在,Net::DNS版本1.03已损坏(请参阅Not a GLOB reference at ...IO/Select.pm line 61#108745: Net::DNS::Resolver bgsend),我想跳过它。有没有办法说出来?

  • 要么版本应该小于1.03?
  • 或者版本可能小于1.03或更大?

2 个答案:

答案 0 :(得分:2)

这样的事情:

my $ver = eval { require Net::DNS; $Net::DNS::VERSION };

if (!$ver || $ver eq '1.03') {
    requires 'Net::DNS' => '1.04';
}

答案 1 :(得分:1)

使用require加载模块,必要时可能使用eval,以避免错误(如果不存在)。对于大多数CPAN模块,您可以检查模块的$ VERSION变量,以查看加载的版本是否符合您的预期。如果没有,请根据需要退出或以其他方式处理问题。

BEGIN
{
    require Net::DNS;
    if ($Net::DNS::VERSION == 1.03) {
        print STDERR "Error: Net::DNS version 1.03 loaded\n";
        exit 1;
    }
 }