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。
标签
反馈
这篇文章有问题吗?请通过在GitHub上打开一个issue或pull request来帮助我们。