写了几年的程序,陆陆续续用了一些语言,因为做的多是CGI程序,Perl和PHP用得最多,体会也较深一些。网上比较二者的文章也不少,这是一个仁者见仁的问题,没有人能下孰优孰劣的结论。
根据我的一些经验,今天我也想比较一下这两种语言,也不是要说孰优孰劣,就想说说各自的长短。
1.变量名的定义
Perl的一般变量、哈希变量和数组变量,分别用$、%和@开头,而PHP则所有变量都以$开头,这一点,似乎PHP更简洁一些。而且,PHP的哈希数组,本身已经是排过序的,Perl需要用Tie::IxHash才能得到排过序的哈希数组。个人感觉PHP变量名的定义要好于Perl。
2.函数的多寡
Perl则基础的函数很少,而且多跟C接近。这一点,个人认为Perl要高级一些,系统一些。PHP的函数很多,远远多出Perl,PHP好像是需要什么功能就做一个函数,所以数量很多很杂,相近的甚至是重复的函数也不少,这也是一些“正统”的人不喜欢PHP的原因之一。
3.扩展模块的多寡
Perl的扩展模块非常多,几乎涉及所有领域,所以Perl几乎无所不能,CPAN是Perl扩展模块的大本营。PHP的扩展模块集合称为Pear,也有很多模块,不过比起CPAN,还是显得少。
4.面向对象的能力
Perl的面向对象是用模块来实现的,感觉不适真正意义上的OO,只是一般意义上的函数和变量包装。PHP4也大体如此。PHP5以后,面向对象的特性有了大幅度的改善,已经具备了几乎所有的OO特性,尽管还没有达到Java那样的面向对象,感觉也很不错了。
5.跨平台的能力
两者都跨平台,不过Perl更倾向于Linux/Unix,在Windows上得借助于ActivePerl,且mod_perl好像只跟Apache配合(没尝试过IIS和mod_perl结合,所以能否实现不是很清楚),PHP则兼顾多种环境,Windows上面的表现跟Linux/Unix下面几乎一样,跟Apache/IIS也能随意结合,这一点,应该说PHP做得很好,可以做到随意搭配。
总结
最直接的感觉,PHP来做服务器端的嵌入式脚本,两个字:方便,然而由于其方便,牺牲了一些原则,有时候会有一些令人恼火的“方便”,比如,Post/Get的内容自动加“/”的设定,刚开始不明白,总也想不出什么地方出了毛病,后来才知道是设置上的问题,这时候的感觉,就是PHP画蛇添足。Perl是比较传统的语言,它诞生的时候,并不是为了做动态网页的,所以用它做动态网页的时候,可能不如PHP方便,但是Perl很全面,做Batch是Perl的强项,本来很复杂的东西,用Perl做,也许可以轻松解决。
总的说来,这两个语言大体是相通的,所以只要会了其中一种,另外一种上手很容易,几乎是“不费吹灰之力”。我是先用熟了Perl,再用PHP,所以有这样的感觉。不知道刚开始用PHP,再用Perl的人是不是也有这样的感觉。