首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我是否可以在不指定所需的Perl版本的情况下使用新的5.12包版本语法?

我是否可以在不指定所需的Perl版本的情况下使用新的5.12包版本语法?
EN

Stack Overflow用户
提问于 2013-05-22 20:57:38
回答 2查看 162关注 0票数 9

我对Perl5.12中引入的use VERSION语法和package NAME VERSION语法的必要性感到困惑。我本以为必须同时指定两个:

代码语言:javascript
复制
use v5.12;

package MyPackage 0.01;

我见过的任何例子都是这样的。然而,偶然(即不加注意地复制和粘贴),我发现当我有use 5.010或者甚至没有指定版本时,这个新的包版本语法可以工作。

底层的Perl安装是ActiveState 5.14,那么在这种情况下解释器版本是唯一的要求吗?我的印象是,新特性总是需要use VERSION语法,以帮助向后兼容。有例外吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-22 21:36:44

并不是每个新特性都是feature

use VERSION语法执行以下操作:

当当前的perl版本太低时,

  • 会抛出错误。
  • feature杂注中导入适当的功能集。我的feature版本的perldoc页面列出:

包含的捆绑功能-:默认array_base :5.10表示状态开关array_base :5.12表示状态开关unicode_strings array_base :5.14表示状态开关unicode_strings array_base :5.16表示状态开关unicode_strings unicode_eval unicode_strings current_sub fc

(实际上,array_base是在5.16中引入的,但被添加到以前的back-compat).

  • since 5.11.0捆绑包中,strict杂注在当前范围内激活。

有些修改是如此向后兼容,以至于不需要提供一种方法来停用它们(这就是feature杂注的意义)。use MODULE VERSION语法在很大程度上是向后兼容的。中的版本和导入列表之间缺少逗号。

代码语言:javascript
复制
use MODULE VERSION LIST;

这不是问题(即这种语法以前是非法的)。当LIST丢失时,import方法将接收不能识别此语法的perls上的版本号。Exporter模块处理这种情况,并检查模块版本。因此,通过Exporter提供import的所有模块(大多数)都是安全的。

票数 11
EN

Stack Overflow用户

发布于 2013-05-22 21:32:31

use VERSION为你提供了所有你可以用use feature显式打开的东西,如果你当前的版本低于你想要的版本,你会抱怨。请参阅此文档:http://perldoc.perl.org/functions/use.html

如果版本高于当前Perl解释器的版本,则会引发异常;Perl将不会尝试解析文件的其余部分。

。。

use VERSION还启用了由feature杂注定义的请求版本中的所有可用功能,禁用了请求版本的功能包中未包含的所有功能。请参见功能。类似地,如果指定的Perl版本大于或等于5.11.0,就会像use strict一样在词法上启用strictures。任何对use strictno strict的显式使用都会覆盖use VERSION,即使它出现在它之前。在这两种情况下,都不会实际加载feature.pm和strict.pm文件。

只是改变的东西,比如某些函数的行为,正则表达式修饰符和perldelta中描述的其他东西都与此无关。您不能强迫它回到以前版本的行为,因为这不在您的perl解释器中。

在我看来,我们在生产中遇到这个问题的一个例子是正则表达式的/r修饰符。这是在Perl 5.14.0中引入的。如果你在5.12上使用它,它会给出一个语法错误。一旦它在5.14上运行,它就会工作,即使是这样的程序:

代码语言:javascript
复制
#!/usr/bin/perl
use strict; use warnings;
my $foo = 'foobar';
print $foo =~ s/foo/oof/r;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16692410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档