Perl粉丝们期待的Perl6也许脚步变得近了。
本周Perl发布了 5.34.0 版(https://metacpan.org/release/XSAWYERX/perl-5.34.0),可以供开发者们下载。
https://www.perl.org/get.html。
这版本可能是近年新功能、性能增强、错误修复和改进最多的一个版本,这可能是15年来最让人惊喜的事情。
下面我们就来看看Perl的近期发展历史。
Perl 5.10(2007年)
https://perldoc.pl/perl5100delta
这是一个非常重要的版本。它是在上一个版本5.8五年后才发布的版本。
这并不是说Perl开发人员比较闲,但确实说,到了5.14版本,Perl语言才稳定的每年至少发布一版。
Perl的历史较长,此版本做了些核心增强,主要增加的还是实用性,有新语法的增加,但又不能破坏Perl向后兼容性。
Perl5.10引入了定义运算符(//),保留先前值的state变量,在输出中自动增加换行符的say函数,还有大量正则表达式的改进。
此版本还引入的智能匹配功能(~~),后来被降为实验版。
Perl 5.12(2010)
https://perldoc.pl/perl5120delta
Perl 5.12添加很多新功能。比较重大的是“可插入关键字”的支持,即允许作者能够大不修改内核的情况扩展语言本身。在之前,人们使用函数,Hacky过滤器以及废弃的Devel::Declare来模拟此功能。
CPAN作者会继续创建各种新的语法,以创建更方便利用核心的原型功能。
Perl 5.18(2013)
https://perldoc.pl/perl5180delta
Perl 5.18加入了smartmatch实验,以及$_变量。随之而来的是一种新的实验功能:警告功能和覆盖警告的方法。
与安全和安全主题相适应,对哈希进行改革和随机化顺序处理,从而提高了对算法复杂性攻击的抵抗力。
Perl 5.20(2014)
https://perldoc.pl/perl5200delta
在2014年,Perl 5.18推出了三个语法特性:实验性子程序签名,键/值哈希数组切片,索引数组切片,另外还包括实验性的后缀解引用(https://perldoc.pl/perl5200delta#Experimental-Postfix-Dereferencing)。
类似这样的语法:
@{ $array_ref } 变成 $array_ref->@*
%{ $hash_ref } 变成 $hash_ref->%*
Perl 5.22(2015)
说到子程序签名,它们的位置移动到子程序名称和属性列表之间。在之前版本中它们是在属性之后。
该版本除了性能增强、安全更新、性能修复,它还删除了一个过去很著名的CGI模块(https://perldoc.pl/perl5220delta#Deprecations),该模块在1997年添加到内核中,该模块被CPAN上新的模块(https://metacpan.org/pod/CGI::Alternatives)替代。
Perl 5.26(2017)
该版本又加了新实验功能,支持了新的子程序语法。令人赞赏的是它增加的可读性增强,如文档缩进;字符类制表符和空格,正则表达式修饰,支持 @{^CAPTURE}, %{^CAPTURE}, and%{^CAPTURE_ALL}等类似的文档修饰符。
Perl 5.28(2018年)
实验性子程序签名以及属性排序倒转。Perl 5.20属性签名序列。
Perl 5.30(2019)
此版本为迁移到Perl的AWK和Fortran程序员提供了可能。
Perl 5.32(2020)
2020年,Perl开发转移到了Github。此次,该语言强化了可读性。
增加了isa操作符如下:
if ( $obj isa Some::Class ) { … }
实例化处理:
use Scalar::Util 'blessed';
if ( blessed($obj) and $obj->isa('Some::Class') { …
可以使用链式比较操作符,比if语句(if ( $x < $y <= $z ) {...} rather than if ( $x < $y and $y <= $z ) {...})更简洁。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/258474.html