Perl:使用中包含的内容5。##。#?

时间:2015-07-06 23:50:16

标签: perl perl5

我见过几个posts,Perl中的状态use 5.12.0;默认启用某些功能/编译指示(例如use strict;)。另一个例子是UTF-8 and perl,其中use 5.14.0;

  

最适合Unicode字符串功能UTF-8处理。

我似乎回想起提供某些默认值的可用use声明(例如use strict; use warnings; use diagnostics;),但不记得具体内容。如何找出给定use 5.##.#;语句中包含的内容?例如,use 5.22.0;默认提供什么? use strict;

3 个答案:

答案 0 :(得分:10)

perldoc feature中记录了这一点:

  

可以使用功能包将多个功能加载到一起。功能包的名称以冒号为前缀,以区别于实际功能。

use feature ":5.10";
     

可以使用以下功能包:

bundle    features included
--------- -----------------
:default  array_base
:5.10     say state switch array_base
:5.12     say state switch unicode_strings array_base
:5.14     say state switch unicode_strings array_base
:5.16     say state switch unicode_strings
          unicode_eval evalbytes current_sub fc
:5.18     say state switch unicode_strings
          unicode_eval evalbytes current_sub fc
:5.20     say state switch unicode_strings
          unicode_eval evalbytes current_sub fc
:5.22     say state switch unicode_strings
          unicode_eval evalbytes current_sub fc

,其中

use v5.10.0;
     

会做一个隐含的

no feature ':all';
use feature ':5.10';
     

等等。

perldoc -f use

中记录了自动启用限制
  

如果指定的Perl版本大于或等于5.12.0,则与use strict一样在词法上启用限制。

答案 1 :(得分:2)

use 5.12.0;执行use feature ':5.12';,所以你得到了

  • 状态
  • 开关
  • unicode_strings
  • array_base

功能包记录在feature.pm的文档中。

答案 2 :(得分:2)

对于feature未涵盖的增强功能,您可以使用Syntax::Construct