Perl 简介
概念:Perl是一种功能强大,功能丰富的编程语言,运行在超过100种计算机平台上,适用广泛,具有30多年的开发经验。Perl在从便携式到大型机的100多个平台上运行,适用于快速原型设计和大规模开发项目。“ Perl”是一种语言家族,“ Raku”(以前称为“ Perl 6”)是该家族的一部分,但是它是一种独立的语言,具有自己的开发团队。它的存在对“ Perl”的持续发展没有重大影响。Perl 语言的应用范围很广,除CGI以外,Perl被用于图形编程、系统管理、网络编程、金融、生物以及其他领域。由于其灵活性,Perl被称为脚本语言中的瑞士军刀。
特性:
- 相比C、Pascal这样的"高级"语言而言,Perl语言直接提供泛型变量、动态数组、Hash表等更加便捷的编程元素。
- Perl具有动态语言的强大灵活的特性,并且还从C/C++、Basic、Pascal等语言中分别借鉴了语法规则,从而提供了许多冗余语法。
- 在统一变量类型和掩盖运算细节方面,Perl做得比其他高级语言(如:Python)更为出色。
- 由于从其他语言大量借鉴了语法,使得从其他编程语言转到Perl语言的程序员可以迅速上手写程序并完成任务,这使得Perl语言是一门容易用的语言。
- Perl 是可扩展的,我们可以通过CPAN("the Comprehensive Perl Archive Network"全面的 Perl 存档网络)中心仓库找到很多我们需要的模块。
- Perl 的 mod_perl 的模块允许 Apache web 服务器使用 Perl 解释器。
Perl 历史及由来
历史:
- 1988年,Internet还是个非常不同的系统。首先,它的规模比较小,并且与它今天的样子大不相同。当时的Internet大约只有6万台计算机,而今天它的数量超过1千万台,并且仍在迅速增加。当时Wold Wide Web尚未问世,直到1991年在CERN计算机网络上才提出了World Wide Web的思路,到了1993年,出现了第一个图形浏览器Mosaic。Internet上的大部分信息都是文字信息。Usenet新闻提供了一个传信系统,使得有兴趣的用户组可以互相保持接触。当时的电子邮件与今天的情况非常相似,主要是文本邮件。文件传送和远程登录形成了Internet上的拥挤信息。
- 1988年1月,Larry Wall宣布,他编写了另一个软件工具,以替代UNIX下的awk和sed等工具,他将它称为“Perl”。Perl的原始手册对它作了如下的描述:Perl是一种解释性语言,它非常适合浏览各种文本文件,从这些文本文件中提取有关的信息,并且根据这些信息打印报表。另外,它也是非常适合执行许多系统管理任务的语言。该语言注重实用性(使用方便、有效、完整),而不注重形式上的美观(小巧、精致)。从语言创建者的观点来看,它综合了C、sed、awk和sh等语言的某些最佳特性,因此熟悉这些语言的用户使用Perl语言是不会遇到多大困难的。(语言发展的历史也留下了csh、Pascal甚至BASIC-PLUS的某些遗迹。)Perl的表达式句法与C语言的表达式句法非常接近。如果你有一个问题,原先使用sed、awk或sh来解决这个问题,但是sed、awk和sh感到力不从心,或者这个问题需要运行得稍快一些,而你又不想用C语言来编写解决这个问题的程序,那么可以使用Perl。另外,也有一些翻译程序,可以将你的sed和awk脚本转换成Perl脚本。
- Perl的第二个版本于1988年6月推出,它与最新的Perl版本非常相似。Perl2的大多数特性都很容易理解和使用。它曾经是并且现在仍然是一种功能丰富而完善的编程语言。正如Perl手册所说,当时Perl的特性主要是用来进行文本处理和执行系统编程任务。对于Perl来说,1991年是不寻常的一年。1月份,Larry Wall与Randal Schwartz撰写的《Programming Perl》一书的第一版出版。这本书曾经是(并且它后来的版本仍然是)Perl语言的权威参考书。这本书的粉红色封面上印有一只骆驼,这是Perl语言的正式标记。(骆驼并不是一种好看的动物,但是它稳健可靠,值得信赖,并且用处极大。)这本书的出版时间恰好与Perl4的推出时间相一致。Perl4是第一个广泛销售的Perl版本,尽管它最后修改是在1992年,但是直到今天,我们仍然能够在Internet上的遥远角落看到它的踪影。如果你在网上遇到它,你不应使用它。
- 1994年10月,Perl5问世。它推出了专用变量、引用、模块和对象等特性,其中“对象”我们尚未介绍。1996年10月,《ProgrammingPerl》一书的第二版(“蓝色骆驼”)上市,它记录了这些新特性。
Perl 版本更新说明
Perl 5.32 已发布,此版本引入了 isa 运算符,用于测试给定的对象是否“是”给定类的实例或为其派生类。Perl 5.32 还添加了对 Unicode 13.0 的支持,脚本运行也已不再是实验性阶段,此外还包括至少有三个安全修复,以及部分性能的提升。
isa 运算符
isa 是新的实验性 infix 运算符,用于测试给定的对象是否“是”给定类的实例或为其派生类。
if( $obj isa Package::Name ) { ... }
支持 Unicode 13.0
详情查看:https://www.unicode.org/versions/Unicode13.0.0/
链式比较
此功能适用于部分比较运算符
if ( $x < $y <= $z ) {...}
上面代码的功能和下面一样
if ( $x < $y && $y <= $z ) {...}
Perl 5.32 也是 Perl 迁移至 GitHub 后发布的首个版本。注释:Perl 6 因与 Perl 5 不兼容,已被重命名为 Raku。