slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
Perl发布 5.8 版本
17611538698
webmaster@21cto.com

Perl发布 5.8 版本

资讯 0 3540 2021-06-04 11:44:19


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

评论