Perl编程语言于当地时间圣诞节期间发布了新版本Perl 5.10,这也是从2002年至今这门“广为流传的动态语言”的第一次。Perl 5.10添加了新的语言特性和新改进的Perl 解释器。
Perl 是由 Larry Wall 创造的一门动态程序语言,首次发布于1987 年。在20年的历史里,Perl 借用了多种语言如C ,shell(sh), AWK, sed 以及Lisp 的特性。Perl 已经成为几乎所有 Unix 系统的标准配置之一,并可以在许多的操作系统上运行,包括 Windows,Mac OS X,Solaris,z/OS,os400,QNX 以及 Symbian。
Perl的语法灵活性有时使它变得难以阅读,而像Python由于固定的语法结构在这些年已经胜过了Perl。而且Web开发的脚本语言比如PHP、Ruby等也已经开始渐渐取代了Perl一度拥有的优势。20年来Perl的境况每况愈下,到今天已如残烛。
新特性
显著的新语言特性。最令人兴奋的改进是全新的智能匹配操作符(smart match operator) 。该操作符实现了一种全新的比较方式,而其具体作用是随操作符接受的输入而有所不同的。举例而言,要看标量 $needle 是否存在于数组 @haystack 中,只要使用新的 ~~ 操作符:
if ( $needle ~~ @haystack ) ...
其结果将会"正如你所愿",而这正是 Perl 语言一贯的标志性做法。在此操作符的基础之上,Perl 语言终于有了 switch 语句 ,而且它比任何传统的 switch 语句,像 C,C++ 和 JAVA 拥有的那些,要先进得多。
正则表达式也变得更加强大了。程序员们现在可以在正则表达式中使用用命名的捕获变量 (named captures) ,而不是数括号来获知匹配的捕获变量。Perl 5.10 还支持嵌套匹配,使得我们现在可以使用许多有效的匹配结构,尤其是在句法解析时。尽管添加了新的特性,正则表达引擎在很多方面做了精心调整并且提高了速度。
他的改进包括可在函数内持续的状态变量(state variable) ,使用户可以自己调整 Perl 运行方式的用户自定义 pragmata ,一个 "定义或" 的操作符 ,为翻转对象(inside-out objects)提供的符号哈希表(field hashes) ,以及改进的错误信息。
解释器的改进
并非只有程序语言的改进,Perl 解释器本身已变得更快,更少内存占用(memory footprint) ,还有了一些 UTF-8 及线程方面的改进。Perl 的安装方式变成了可移动的,这给系统管理员以及操作系统制作者们来说实在是大好消息。源代码现在变得更易移植,很多小 bug 也被顺手改正了。所有这一切都造就了目前为止最棒的Perl.。
想要了解关于5.10所有的改动,请看 Perl 5.10 源代码版本中自带的perldelta 文档。(link: http://search.cpan.org/dist/perl-5.10.0/pod/perl5100delta.pod) 想看简易一点的介绍的话, Ricardo Signes' 的讲义 Perl 5.10 For People Who Aren't Totally Insane (link: http://www.slideshare.net/rjbs/perl-510-for-people-who-arent-totally-insane) 值得一读。
如何获取 Perl
Perl 在除 Windows 之外的几乎所有的操作系统里都已成为标准配置了。不过不想慢慢等待系统升级包的用户可以从 CPAN (the Comprehensive Perl Archive Network )自行下载 Perl 5.10 。地址是 http://search.cpan.org/dist/perl/ ,或者从 Perl 的主页 www.perl.org 下载。
Windows 用户可以编译从 CPAN 获取的源代码来取得 Perl,或者也可以下载两个易于安装的已编译版本中的一个。 Strawberry Perl (link: http://strawberryperl.com/) 是用户群为 Windows 制作的已编译版本,而 ActiveState (link: http://activestate.com/) 的版本由商业公司维护但是同样免费。ActiveState 版本已经可以获取,Stawberry Perl 也即将完成。