Perl:如何获得'使用VERSION'号码

时间:2012-02-07 08:36:24

标签: perl version

运行脚本时是否有一个特殊变量或函数可以给出use VERSION(在这种情况下为5.12.0)的数量?

#!/usr/bin/env perl 
use warnings;
use 5.12.0;

3 个答案:

答案 0 :(得分:5)

我只是快速检查了feature.pm代码 - 版本本身并未存储在任何地方。 Alex的答案已经展示了如何测试呼叫产生的特定功能。

另请注意,可以在多个位置调用use VERSION(例如,在模块中)。

一个假设选项是覆盖use并在某处记录版本号以供检查。

编辑:有些人在钩子方向戳:

use version; # for version parsing
use subs 'require';
BEGIN {
    sub require {
        warn "use ",version->parse($_[0]);
        # ... emulate original require
    };
}

use 5.12.0;

这个有限的示例报告了指定的版本,但是对于实际使用,它必须更加健壮。

答案 1 :(得分:4)

在编译期间,您可以在提示变量(${^H})(龙潜伏)中查看并查看提示哈希(%{^ H})(龙潜伏,但在公共场所)记录的方式),这将让您知道哪些特定功能已启用。如果特别要求功能包或所有给定功能,我不知道如何解决问题:

perl -le "use feature qw(:5.12); BEGIN{print $^H;print foreach keys %^H}"
133376
feature_unicode
feature_say
feature_state
feature_switch

perl -le "use 5.12.0; BEGIN{print $^H;print foreach keys %^H}"
134914
feature_unicode
feature_say
feature_state
feature_switch

答案 2 :(得分:-2)

其中任何一个都为您提供了解释器的版本:

  

<强> $]
  Perl解释器的版本+ patchlevel / 1000。此变量可用于确定执行脚本的Perl解释器是否在正确的版本范围内。 (助记:这个版本的perl是否在正确的括号内?)

     

<强> $ PERL_VERSION
  的 $ ^ V
  Perl解释器的修订版,版本版和颠覆版,表示为&#34;版本&#34;对象。
  这个变量首先出现在perl 5.6.0中;早期版本的perl会看到一个未定义的值。在perl 5.10.0之前,$ ^ V表示为v-string。

那些将是&gt;比你在&#34;使用&#34; line:如果您需要那个精确的字符串,请咬住子弹并将其粘贴在变量中,如下所示:

 use 5.12.0; $WANTPERL='5.12.0';