Perl发布 5.8 版本

Posted 21CTO

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perl发布 5.8 版本相关的知识,希望对你有一定的参考价值。

导读:如果你有15年左右的开发体验,那么你应该写过Perl或者称为CGI的程序。

Perl发布 5.8 版本

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 ) {...})更简洁。


以上是关于Perl发布 5.8 版本的主要内容,如果未能解决你的问题,请参考以下文章

我可以确保在 5.10+ 上编写的 Perl 代码可以在 5.8 上运行吗?

如何在 Perl 5.8 中增加十六进制字符串?

perl 5.8 和 5.10 之间的区别 [关闭]

Perl 5.20.0 发布

Laravel 5.8 有条件地插入 sql 片段

如何定位 perl 模块