experimental - 实验性功能变得简单
版本 0.031
use experimental 'lexical_subs', 'signatures';
my sub plus_one($value) { $value + 1 }
此编译指示提供了一种简单方便的方法来启用或禁用实验性功能。
每个版本的 Perl 都有一些功能存在,但被认为是“实验性的”。在 Perl 5 的大部分生命周期中,这只是在文档中发现的一个名称。从 Perl v5.10.0 开始,在 v5.18.0 中更激进,实验性功能被放置在编译指示后面,用于启用该功能并禁用关联的警告。
experimental
编译指示存在于将所需的咒语组合成一个跨 Perl 版本稳定的单一接口中。对于每个实验性功能,这应该启用该功能并在封闭的词法作用域中消除警告
use experimental 'feature-name';
要禁用该功能,并在适用时重新启用任何警告,请使用
no experimental 'feature-name';
支持的功能,在下面进一步说明,是
args_array_with_signatures
- 允许在带签名的子例程中使用 @_
。
这在 Perl 5.20.0 及更高版本中受支持,但将来可能会被移除。
array_base
- 允许使用 $[
更改 @array
的起始索引。
此功能在 perl 5.30.0 中已移除。
autoderef
- 允许在引用上使用 push、each、keys 和其他内置函数。
此功能在 perl 5.14.0 中添加,在 perl 5.24.0 中移除。
bitwise
- 允许使用新的字符串位操作符
此功能在 perl 5.22.0 中添加。
builtin
- 允许使用 builtin:: 命名空间中的函数
此功能在 perl 5.36.0 中添加
const_attr
- 允许在子例程上使用 :const 属性
此功能在 perl 5.22.0 中添加。
declared_refs
- 通过对引用赋值来启用别名
此功能在 perl 5.26.0 中添加。
defer
- 启用 defer 块的使用
此功能在 perl 5.36.0 中添加
extra_paired_delimiters
- 启用使用比传统四个更多的成对字符串定界符,< >
、( )
、{ }
和 [ ]
。
此功能在 perl 5.36 中添加。
for_list
- 允许使用 for
同时迭代多个值
此功能在 perl 5.36.0 中添加
isa
- 允许使用 isa
中缀操作符
此功能在 perl 5.32.0 中添加。
lexical_topic
- 允许通过 my $_
使用词法 $_
。
此功能在 perl 5.10.0 中添加,在 perl 5.24.0 中移除。
lexical_subs
- 允许使用词法子例程。
此功能在 5.18.0 中添加,在 5.26.0 中变为非实验性(且始终启用)。
postderef
- 允许使用后缀取消引用表达式
此功能在 perl 5.20.0 中添加,在 5.24.0 中变为非实验性(且始终启用)。
postderef_qq
- 允许在内插字符串中使用后缀取消引用表达式
此功能在 perl 5.20.0 中添加,在 5.24.0 中变为非实验性(且始终启用)。
re_strict
- 在正则表达式中启用严格模式
此功能在 perl 5.22.0 中添加。
refaliasing
- 允许通过 \$x = \$y
使用别名
此功能在 perl 5.22.0 中添加。
regex_sets
- 允许在正则表达式中使用扩展方括号字符类
此功能在 perl 5.18.0 中添加。
signatures
- 允许子例程签名(用于命名参数)
此功能在 Perl 5.20.0 中添加。
smartmatch
- 允许使用 ~~
此功能在 Perl 5.10.0 中添加,但需要注意的是,5.10.0 和 5.10.1 之间存在重大不兼容性。
此功能将在 Perl 5.38.0 中弃用,并在 5.42.0 中移除。
switch
- 允许使用 ~~
、given 和 when
此功能在 Perl 5.10.0 中添加。
此功能将在 Perl 5.38.0 中弃用,并在 5.42.0 中移除。
try
- 允许使用 try
和 catch
此功能在 Perl 5.34.0 中添加。
win32_perlio
- 允许使用 :win32 IO 层。
此功能在 Perl 5.22.0 中添加。
使用此 pragma 来“启用实验性功能”的另一种说法是,此 pragma 将禁用使用该功能会产生的警告。因此,应用 pragma 的顺序很重要。特别是,您可能希望在启用警告后启用实验性功能
use warnings;
use experimental 'smartmatch';
您还需要注意为您启用警告的模块。一个常见的示例是 Moose。在此示例中,“smartmatch”功能的警告首先由 warnings pragma 打开,由 experimental pragma 关闭,然后由 Moose 模块再次打开(修复方法是交换最后两行)
use warnings;
use experimental 'smartmatch';
use Moose;
由于其启用的功能的性质,无法以任何方式保证向前兼容性。
perlexperiment 包含有关实验性功能的更多信息。
Leon Timmermans <[email protected]>
此软件的版权归 Leon Timmermans 所有 (c) 2013。
这是免费软件;您可以在与 Perl 5 编程语言系统本身相同的条款下重新分发和/或修改它。