【问题标题】:What does Perl do when two versions of a module are installed?当安装了两个版本的模块时,Perl 会做什么?
【发布时间】:2012-02-13 10:04:10
【问题描述】:

我在使用的远程机器上没有 root 访问权限,所以我使用 cpanm 和 local::lib 的组合,如 here 所述,将 CPAN 模块安装到机器上的本地目录.使用 cpanm,我假设 cpanm Module::To::Update 会在我的本地库中安装最新版本的模块。

显然,我不需要 root 访问权限来使用 CPAN 升级我的模块,因为我刚刚尝试过,并且升级顺利进行。但是,我仍然很好奇 Perl 将使用哪个版本的模块:本地版本,还是默认的 CPAN 版本?还是只会使用较新的?

如果这存在于 perldoc 或 Stack Overflow 中,我也将不胜感激。我都试过了,但我找不到它=/

【问题讨论】:

    标签: perl cpan perl-module


    【解决方案1】:

    它使用通过@INC按顺序搜索时找到的第一个。

    【讨论】:

    • 哦。这很简单。并且大概指定use Module Version 会让我手动选择我想要的。谢谢。
    • @dgempesaw - 这种假设是不正确的。如果您需要从特定位置加载特定模块,则需要破解 @INC%INC(有很多方法可以做到这一点。如何做到这一点将是一个很好的后续问题)。
    • @dgempesaw,要找到模块的版本,Perl 需要执行模块。如果模块不是正确的版本,则无法取消执行。
    • @mob 我明白了。我想我需要更仔细地阅读相关文档;我理解@INC 足以将我的首选目录放在首位。
    • @ikegami 这很有意义。谢谢。
    【解决方案2】:

    您可以通过在 linux 中运行它来检查它:

    perl -e 'use <module>; print $<module>::VERSION;'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-12
      • 2015-05-20
      • 2012-10-07
      • 2012-03-09
      • 1970-01-01
      • 1970-01-01
      • 2021-03-23
      • 2017-10-22
      相关资源
      最近更新 更多