这是一个没有结局的争论话题。
不过比较乐观点的事实就是,这两种语言都能完成彼此能做的事情,并且不存在Perl中能简单完成的事情,到了Python就非常艰难才能完成,反之也然。
我接触了两种语言。早年自学了Python,结合Awk和bash,SED和grep,感觉在Linux环境下,牛逼得似乎没有做不成的事情,其实Python一个工具就能完成后面一堆工具能做的,但是,实际环境中,总是首先用awk,然后就是bash下的sed或grep,实在没辙了,启用Python。
这种情况到了触碰Perl后,才算简单化了。这是因为Perl的语法结构实际上就是借鉴了很多sh和AWK,sed的东西。在Python中需要写上7到8行的代码,到了Perl里面就是一行代码的事情,并且还能这样那样地变着花样写。
用了Perl后,才开始很少使用sh,awk或其它一堆的文本工具。
有人说,Perl的语法很丑陋,不好维护。其实你看惯了bash中那惊为八戒的丑样句子,perl简直敢声称自己是女儿国的国王了。
话说,一个程序代码的维护难易与写程序的人有密切关系。有人能将perl代码写成非常容易维护和理解的,也有人将Python代码写得艰涩难懂的。
如果你想写代码时候,能灵活多样化(不止一种方式去完成代码任务),尽量短小紧凑的代码(regex可以简化到只是操作符,不是像Python那样非要用函数来包装),并且你已经习惯了那些特别的变量符号,尽可能方便地使用RegEx,那么就用Perl。
如果你看不惯Perl中那些来自SH或AWK等的古怪变量,看不惯那么多的花括号,符号,那么选Python。虽然有点累赘,但至少代码看上去干净。
使用Perl的另外一个好处就是,很多的IDE工具能完美处理Perl那样的语法。这是因为Perl和c,c++,c#那样的语法,使用了花括号,使得智能编辑器能很方便的进行智能填充。但是,Python是使用空位来定于逻辑区,导致很多编辑器的智能功能无法实行。
我是从Python转向Perl的,因为我不在乎那些符号。实际上,看多了就习惯了。而它带来的自由感觉却是写Python代码时候所没有的。这里面的感觉究竟是怎样的,我举个比喻或许能说明一点问题:
不会使用VIM的人,觉得Notepad++或其它的文本编辑器就足够好用,并且简单了。但是一旦掌握了VIM,真的会觉得其它编辑器太弱了。这个对我来说,就是Perl和任何其它脚本语言(包括Python)的情况,一旦用了Perl,其它的脚本语言只有靠边站的份。
当然,这只是我的情况。