【问题标题】:How can I 'use' specific version of a perl CPAN module?如何“使用”特定版本的 perl CPAN 模块?
【发布时间】:2013-01-15 06:29:12
【问题描述】:

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

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

use XML::Smart 

【问题讨论】:

  • 看看这个帖子有没有对你有用的信息:stackoverflow.com/questions/260593/…
  • 你就是 Pinto 的确切用例,作者 Jeffrey Thalhammer。它在 CPAN 上:search.cpan.org/perldoc?Pinto
  • 详细说明:Pinto 管理您的依赖链,允许您将某些模块“固定”到特定版本,同时允许其他模块在新版本可用时升级。您可以回滚更改,等等。这就像专门针对 Perl 模块/发行版的版本控制。
  • Pinto 不代表别人无视它,通过其他方式升级它。

标签: perl cpan perl-module


【解决方案1】:

要使用特定模块,请参考only

use only MyModule => 0.30;

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

use XML::Smart v1.6.9;

use XML::Smart 1.6.9;


为了向后兼容

use XML::Smart 1.006_009;  

来自perldoc的参考:

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

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

【讨论】:

  • 这不会阻止使用较新的版本。
  • @ikegami - 抱歉。使用only 模块更新答案
【解决方案2】:

你可以做低科技的事情:

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

知道特定模块如何报告其版本令人头疼。 version 模块应该做版本数学,但我发现它并不可靠,因为指定版本的方法太多。

【讨论】:

    猜你喜欢
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-28
    相关资源
    最近更新 更多