use VERSION
为您提供了您可以明确打开的所有内容,use feature
并在您当前的版本低于您想要的版本时抱怨。请参阅此文档: http: //perldoc.perl.org/functions/use.html
如果 VERSION 大于当前 Perl 解释器的版本,则会引发异常;Perl 不会尝试解析文件的其余部分。
[..]
use VERSION
还启用由 pragma 定义的请求版本中可用的所有功能feature
,禁用不在请求版本的功能包中的任何功能。见功能。类似地,如果指定的 Perl 版本大于或等于 5.11.0,则在词法上启用严格,就像使用严格一样。任何显式使用use strict
或no strict
覆盖use VERSION
,即使它出现在它之前。在这两种情况下,feature.pm 和 strict.pm 文件都没有实际加载。
只是改变的东西,比如某些函数的行为,正则表达式修饰符和perldelta中描述的其他东西与此无关。你不能强迫它回到以前版本的行为,因为那不在你的 perl 解释器中。
我在生产中遇到这个问题的一个例子是/r
正则表达式的修饰符。这是在Perl 5.14.0中引入的。如果你在 5.12 上使用它会出现语法错误。只要它在 5.14 上运行,它就会工作,即使是这样的程序:
#!/usr/bin/perl
use strict; use warnings;
my $foo = 'foobar';
print $foo =~ s/foo/oof/r;