Perl v5.20 - 您需要了解的内容

随着Perl的新版本预计在本周发布,我们整理了Perl v5.20的主要变更汇总。祝您阅读愉快!

子程序签名

这是最大的一个改进。很难低估这是多么伟大。不再需要难看的赋值代码——在5.20中,您可以这样编写:

use feature 'signatures';

sub echo_chamber ($sound) {
    return $sound;
}

我们最早在2月份介绍了它们,Ovid也在博客中讨论了它们。最近我们还进行了基准测试

后缀解引用

下一个酷炫的新功能是后缀解引用。难以描述但易于展示

use experimental 'postderef';

my $nested_array_ref = [[[[[1,2,3]]]]];

# circumfix dereference - usual way
push @{$nested_array_ref->[0]->[0]->[0]->[0]}, 4;

# postfix dereference - new way
push $nested_array_ref->[0]->[0]->[0]->[0]->@*, 5;

我们之前详细介绍了后缀解引用的优势。

哈希切片

Perl 5.20带来了一个新的切片类型:哈希切片。它们的工作方式与数组切片类似,但“切片”的数据提供完整的键值对,而不是像数组切片那样只提供值。

my %raindrops = ( splish => 4, splash => 9, splosh => 7 );
my %hash_slice = %raindrops{ 'splish', 'splosh'};
# hash_slice is (splish => 4, splosh => 7)

更酷的是,如果您在数组上使用哈希切片,结果哈希的键将是数组的索引元素

my @raindrop_types = qw/splish splash splosh/;
my %hash_slice = %raindrop_types[0, 2];
# hash_slice is (0 => 'splish', 2 => 'splosh')

Android

是的,Perl 5.20可以在Android上编译!当前的文档在线,一旦您安装了5.20,您可以通过“perldoc android”访问。

性能改进

Perl 5.20在各个方面的性能都得到了提升——5.20的perldelta列出了17项性能改进,包括更快的正则表达式、哈希键查找和字符串复制。Matthew Horsfall 博客中讨论了一些更改,Stefan Müller 也讨论了

其他

现在可以使用“prototype”关键字将子程序原型声明为子程序属性。例如

# usual prototype
sub example ($$) {}

# prototype declared via attribute
sub example :prototype($$) {}

更快的Windows安装——由于“make test”错误的修复,可以节省15分钟的安装时间。此外,现在可以使用Visual C++ 2013编译器来构建Perl。

Perl 5.20使用最新的Unicode版本6.3,比之前的6.2(Unicode 更改日志)更高。

rand函数现在使用内部平台无关的随机数生成器。以前Perl会使用特定于平台的随机数生成器,导致随机数生成质量不一致。

弃用

CGI及其相关模块将从核心中删除(Sawyer X 肯定很高兴)。

Module::Build也将从核心中删除。David Golden 去年在博客中讨论了这一点。

将非整数值引用赋给输入记录分隔符变量(“$/”)将引发致命异常(但undef仍然可以)。

结论

5.20版本的内容远不止上述总结项目。有关所有更改的列表,请参阅perldelta。Perl 5.20是多年来的最具激动人心的版本。感谢Perl 5 Porters团队完成了这项了不起的工作,交付了卓越的新Perl!

喜欢这篇文章吗?请帮助我们并转发它!


本文最初发布在PerlTricks.com

标签

David Farrell

David是一位专业的程序员,他经常推文博客关于代码和编程艺术。

浏览他们的文章

反馈

这篇文章有问题吗?请通过在GitHub上打开一个issue或pull request来帮助我们。