当前位置:开发者网络 >> 技术教程 >> CGI教程 >> CGI文档 >> 内容
精彩推荐
分类最新教程
分类热点教程
  
Perl渐成气候
作者:未知
日期:2003-09-13
人气:
投稿:Andy.m(转贴)
来源:未知
字体:
收藏:加入浏览器收藏
以下正文:
  当我们把目光对准Linux时,我们要记住,在Internet世界里还有很多自由软件。谁代表自由软件?谁是自由软件的发展方向?Linux作用举足轻重,但Perl、Apache、Python等自由软件同样不可忽视。它们的情况如何?
  1987年,美国的Larry Wall及其合作者们开发了Perl(Practical Extractionand Report Language)语言。从一开发起,LarryWall就赋予Perl免费和开放源码的权利。所以,Perl由它的使用者维护和发展。到现在,它的影响力并不亚于Linux,并在Internet的世界里扮演着越来越重要的角色。

  系统管理员和CGI作者的宠儿
  简单地说,Perl是一种解释性高级程序语言。为什么Larry Wall会想到要开发Perl语言呢?这跟他长期与Unix打交道有关系。大家知道,Unix主要用C语言和Unix Shell来编程的,但它们却不是一个整体的两个部分。C语言能很方便地进行系统内部的操作,但却不能快速地进行外部开发;Unix Shell刚好相反,它能很方便地进行外部处理,却很难进行底层操作。如果能把这两者结合起来,不是很好吗?Larry Wall认为这是他创建Perl的初衷。因此,他把C语言以及sed、awk、Unix Shell等十多种工具和语言中非常“酷”的优点结合起来,把它们中不“酷”的东西清除出去,开发出了Perl。如果程序员觉得用sed或awk或sh完成工作有点慢,但又不想用C语言来写,Perl就可以派上用场了。
  当然,到了现在,Perl已经不像当初那么“单纯”。经过十多年的发展,Perl已是最主要的Web脚本语言,大多数的CGI程序都是用它写的(正因为如此,它甚至成CGI程序的代名词)。同时,它也是一种非常好的快速原型设计语言,并且能使不同的系统很好地协同工作。由于Perl能非常方便地将小程序嵌入到大型应用程序之中,所以被誉为是“Internet的输送管道”。
  Perl目前已经受到很多程序开发人员的喜爱,如系统管理员、数据库开发人员、Web开发人员等。现在,Perl不但成为系统管理员和CGI作者的宠儿,就连数学家、遗传学家、新闻工作者,甚至企业管理者也都喜欢用Perl。目前全世界至少有100万以上的程序员在使用Perl来工作。
  Perl的标准库及各种文档都是由自愿者写的,但它也有核心开发队伍,即PerlPorters。这些成员都是无私奉献的,他们的任务也很简单,就是开发出大量的比市场上所出售的Perl应用程序更好的产品,而且是免费的。

  Perl越来越得到大家的认可并非偶然,这是由于它具有很多其它语言所没有的优点。首先,用Perl编写的程序不用编译,其程序可直接运行。最重要的是,它可以跨平台运行。同一Perl程序可以在Unix、Windows、Windows NT、MVS、VMS、DOS、Macintosh、OS/2、Plan9及AmigaOS等操作系统上自由运行。其次,Perl简单易学。它可以使复杂的事情变简单,简单的事情更简单。Perl为程序员处理了很多东西,例如内存分配、碎片整理等。同时,Perl程序也是相当简练的,一页的Perl程序用其它语言可能要花几百甚至上千行代码。Perl程序不必处理很多细节,这大大减少了程序的Bug,增加了可靠性。第三,Perl运行速度很快。第四,Perl是面向对象的。第五,Perl应用程序很多。CPAN(Comprehensive Perl Archive Network)有很多Perl应用程序。你可以在几分钟内找到自己想要的东西。这些程序都是来自世界各地的Perl开发者提供的。最后,Perl是自由软件,为程序员免费共享。

  Perl的版本演变

  1988年1月,Perl的第一个正式版本Perl1发布;1988年6月,Perl2发布;1989年10月,Perl3发布;1991年3月,Perl4发布;1994年10月,Perl5发布。因此,Perl5是最新的版本。但在Perl5中,目前已发布Perl5.6。(注:Perl5.6的前一个版本是Perl5.005,但由于Perl的支持者们觉得Perl5.1和Perl5.001会使人误解,所以决定将版本的编号改为Perl5.6,而不是Perl5.006。对Perl5.6的新修订版本称为Perl5.6.1。)

  Perl5和以前的版本有很大的区别,它的代码全部是重新写的。它最主要的改进有下面几点。一是语法更简单,定义变量更灵活。Perl5的保留字只有原来的1/3,并且去掉了很多的不规则的语法。在Perl5中,你可以像C语言一样自由地定义变量,甚至可以定义匿名的变量和子程序。二是模块化和重用性更好。Perl标准程序库都根据模块来定义,每个程序包都可以很方便地使用。三是面向对象进一步加强,使用了“类”的概念,文件句柄也得到支持。四是同时执行多种DBM。一个Perl程序可同时访问DBM、NDBM、SDBM和GDBM等。五是嵌入性和可扩展性更好。在Perl5中,可轻松地把Perl程序嵌入到C或C++程序中,也可借助XS(Perl提供的一个转换器)将C或C++程序很方便地接入到Perl程序中。另外,Perl程序的易读性也有了明显的改进。

  总之,Perl5与Perl4在程序代码上会有很大差别,但Perl的每个版本都向下兼容,Perl5也一样。所以,Perl4的程序可以在Perl5上安全运行。但Perl的支持者们说,从Perl5发布以后,他们就建议用户用Perl5,因为他们不会对Perl4再提供支持。

  CPAN提供大量Perl标准程序

  CPAN是为使全世界Perl爱好者更好地共享资源而建立的一个网站。它是包含所有Perl资源的网站,在全世界有100多个镜像站点,在http://www.perl.com中有个虚拟接口。

  CPAN有个多路转接器,用户一旦访问该站点,它会自动选择一个离它最近的镜像。例如,你在法国,它就会自动帮你链接到法国当地的一个站点。当然,它也提供人工选择的功能。用户一旦选定,它便会记住,以后就直接进入该站点。这样的目的是为了使用户下载速度加快。正是这一功能,很多人将CPAN称为“魔鬼站点”。

  CPAN最大的好处在于有关Perl的内容它无所不包。它有两个大的目录,一是“脚本(Scripts)”。在它里面,又有分类,如和Web有关的脚本等。另一个是“模块(Modules)”。这是个Perl标准程序库,可以用这些模块来写CGI程序、图形程序、数据库或其它各种程序。在这里,你可以找到Perl的FAQ,也可以找到Perl的语法、Perl的入门指南。最重要的是,在这里有很多可供自由下载的Perl应用程序,供人们使用。这些应用程序都是即插即用的模块,并且都是可重用的源代码。正是由于应用程序的丰富且容易得到,才使得Perl越来越为大家所了解和喜爱。

  微软投资支持Perl

  三年前,微软公司就和ActiveStateTool公司合作,投资开发Perl应用程序,并且他们的大部分成果都开放源码,为大家共享。双方表明,这次合作的意图是改善Perl在Windows平台上的应用。ActiveState公司将为Perl在Windows平台上的应用加入很多以前所没有的特性,如fork、全面支持Windows平台的统一编码标准等。

  这是微软公司第一次向基于Windows平台的开放源码程序投资。业内人士对这个消息反应不一。有人认为这是好消息,因为它可以使Perl为更多人所知道,更有利于Perl的发展。但也有人对此深表担忧,尤其是Perl的支持者们更不认为这是个好消息。他们担心Perl会在微软的干预下变成“Microsoft Perl”。对此,ActiveState的负责人认为,微软的目的是为了利用Perl改善Unix与Windows之间协同工作的能力。他指出,Perl与Java是完全不同的事情,在Unix与Windows平台上,Perl版本是统一的,它们的核心程序代码也是一样,因此不会出现Unix与Windows平台上的Perl相背离的结果,也就是说不会出现微软的Perl。同时,微软的有关负责人也说,微软的目的是最终结果,而不是想通过投资来控制Perl的支持者们。

  Perl的使用者比Java多

  现在,Java的呼声正一浪高过一浪,但在Internet的世界里,有一点是没有争议的,即Perl的使用者比Java的使用者要多。Perl可以跨平台运行,而Java也是可以跨平台运行;Perl是众多自愿者支持的自由软件,Java是SUN公司开发的纯商业软件。Perl与Java,哪一个好呢?

  从经济角度看,自然是Perl好。不花钱又能办事,谁都喜欢。在技术上是怎样的呢?事实上,任何一门程序语言,都有其不足与长处。一个程序员想试验哪种语言好,最好的方法是用两种语言写同一个程序,看看哪个更好写,哪个运行更快更稳定。

  Larry Wall本人认为,Perl在快速原型设计方面比Java强得多,并且Perl可以使系统运行失败的影响减小到最少。也有人认为,Perl比Java成熟得多,因为Java的年龄毕竟不大,还没有经受过大的考验。

  不过,不用担心Perl会吃掉Java,或者Java会吃掉Perl。这是两种基础不同的程序语言,它们会有各自的生存空间。

  Perl比GPL更开放

  不像Java,Perl是免费的,没有私有产权这么一说,它的源代码和编译器都是免费、公开的。虽然GNU计划包含有Perl,但并没有“GNU Perl”这样的概念,因为Perl不是自由软件联盟(FreeSoftware Foundation)开发的,也不由它维护。事实上,Perl比GNU GPL和AL(Artiste License)的条款更开放。Larry Wall及其支持者们允许用户把自己开发的Perl程序销售,也可以去买市场上的Perl应用程序。但一般来讲,用户总能从Perl的维护者们所开发的程序里找到自己想要的东西,并且决不会比市场上出售的程序差。

  自由软件的出现给Internet世界带来很大的冲击。Perl这个自由软件,已不仅仅是一种语言,它是Internet文化的一部分,它用一种创造的思想去对待一切。
相关文章: