运行脚本时是否有一个特殊变量或函数可以给出use VERSION
(在这种情况下为5.12.0
)的数量?
#!/usr/bin/env perl
use warnings;
use 5.12.0;
答案 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';