我如何“使用”特定版本的 Perl CPAN 模块?

问题描述 投票:0回答:3

我有很多 Perl 代码,在测试和生产中执行不同的操作,我想将我的代码锁定到特定版本的 CPAN 模块,以防将来对其中一些模块进行一些更改,这可能会破坏我的代码。

所以我想使用我使用的所有模块的特定版本。我所说的使用是指

use XML::Smart 
perl cpan perl-module
3个回答
9
投票

要使用特定模块,请参阅

use only MyModule => 0.30;

如果您想要的模块版本高于当前安装的模块版本,也会打印错误 你可以说

use XML::Smart v1.6.9;

use XML::Smart 1.6.9;


为了向后兼容

use XML::Smart 1.006_009;  

参考perldoc

  • 使用模块版本列表
  • 使用模块版本
  • 使用模块列表
  • 使用模块
  • 使用版本

如果模块和列表之间存在 VERSION 参数,则 use 将使用给定的值调用类 Module 中的 VERSION 方法 版本作为参数。默认的VERSION方法,继承自 UNIVERSAL 类,如果给定版本大于该值,则会发出嘎嘎声 变量 $Module::VERSION .


4
投票

你可以做低技术含量的事情:

BEGIN {
    use XML::Simple;
    die "..." unless XML::Simple->VERSION eq '1.23';
    }

了解特定模块如何报告其版本是一件令人头痛的事情。

version
模块应该做版本数学,但我还没有发现它可靠,因为有太多的方法来指定版本。


0
投票

如果您在项目根目录中使用

cpanfile
来声明对 CPAN 模块的依赖关系(您应该这样做),您可以在那里确定版本:

requires 'XML::Simple' => '== 1.23';
© www.soinside.com 2019 - 2024. All rights reserved.