Python程序员的Perl入门指南

19

我精通Python(和一些其他语言),尽管似乎大多数人是反过来的,但我认为学习Perl可能也很有意义 (即从Python转向Perl)

我的主要担忧不在于语言本身(我认为那部分总是容易的),而在于学习Perlish(与Pythonic相对应的方式); 因为如果最终用Perl编程Python,我认为这样做就不值得努力了。

因此,我的问题基本上有两个:

  • 是否存在许多问题/应用领域,其中实际上使用Perl比使用Python更方便?
  • 如果第一个问题的答案是肯定的,那么哪里可以找到一个好的地方开始学习最佳实践,而不是针对初学者的。

9
@MattH这完全不正确。Perl 绝对有自己的惯用语,这些惯用语比其他方法更受推崇。仅仅因为解决同一个问题有多种方式,并不意味着其中一种不比其他方式更具 Perl 特色。 - mpeters
4
在 Perl 中,所有的猪都是平等的......但有些猪比其他猪更加平等 :) - DVK
1
@DVK 不要啊!!!所有动物都是平等的。但有些(比如猪)更平等http://www.youtube.com/watch?v=NZldlyeR8DU&feature=fvw - Sinan Ünür
3
@Sinan - 呵呵,我的版本比奥威尔的更符合 Perl 的习惯用法 :) - DVK
2
人们离开Perl的原因是有道理的。它是一种可怕的语言。花上一两个小时学习它,足以快速进行命令行操作(perl -ne 's/a/b/; print;')-这比sed和awk更好。任何更多的学习都只会污染你的大脑。 - Glenn Maynard
显示剩余4条评论
6个回答

17

Perl更为方便的一个领域是使用它进行一行程序的编写。Python可以用于生成一行程序,但通常会显得"笨拙"(或难看)。请注意,Perl以其"简洁性"或"短小精悍"而闻名,这往往以可读性为代价。因此,从Python转过来,你必须学会习惯。

另一个领域是Perl在CPAN中的大量模块。相当于它的是Pypi,但其模块数量不如CPAN多。

话虽如此,两者都可以做相似的事情,并且两者都有自己的优点。

至于您的第二个问题,您可以查看Perl文档。我发现它非常有用。特别是还要阅读Perl FAQ。如果我想学习Perl,它们是我最好的资源。


1
具体来说,请查看 perldoc perlstyle,并查看骆驼书中关于编写惯用 Perl 的章节(例如 next if $xyz; 这样的语句非常 Perl 风格和惯用)。 - user240438
5
Perl的常见问题解答文档非常庞大。也许只需查看FAQ,就能简单回答SO上一半关于Perl语言的问题 :) - Robert P
3
Perl 在多行 lambda 方面也非常擅长,而 Python 则必须使用单行lambda。 - MkV

15

要遵循最佳实践,请查看Damian Conway的《Perl最佳实践》。虽然不是所有推荐的实践都合理,但大多数都是。

Perl::Critic模块也有助于实践的遵循。

此外,请查看现代Perl书籍博客。

如果您有问题,Perlmonks是寻求帮助的最佳网络论坛。这里有许多非常有知识和友好的人,他们可以并且会回答您的问题,并讨论不同方法的优缺点。


11

使用 Moose 进行开发,用 Mouse 和 Any::Moose 进行部署。 - MkV
1
@james2vegas:我从未使用过Mouse或Any::Moose。到目前为止,我一直只使用Moose而没有遇到任何问题。顺便提醒其他读者... Mouse是一个轻量级的Moose,通过排除元对象协议(Class::MOP)来实现。 - draegtun
1
@james2vegas:关于Aspect / AOP - 是的,我相信这是Perl中完整的AOP实现。而我认为Moose更多地拥抱(部分)AOP而不是强制执行它。 - draegtun

4
我认为从O'Reilly Media学习Perl(Learning Perl)是一个相当不错的入门方式,即使你已经精通Python。特别是如果你想了解一行代码的技巧(这正是Perl真正擅长的)。

即使你是一位经验丰富的程序员,LP是一本很好的入门书籍。它写得非常好,阅读起来不会让人痛苦,可以轻松地“找到重点”。 - daotoad

4

Perl急速入门

对于想学习并且希望能够快速掌握的人来说,我最喜欢的书籍之一是Greg London所著的Perl急速入门。这本免费的电子书可以从perl.org上获取。如果你是程序员,懂得脚本编写,了解动态语言的概念,并且只想知道perl是如何做到的,那么这是一个很好的起点资源。


3

高效Perl编程主要面向已掌握Perl语法基础,但需要学习惯用法的人群。我们也在我们的Effective Perler博客中涵盖了类似的内容 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接