Perl 食谱

作者:James Lee
Perl Cookbook
  • 作者:Tom Christiansen 和 Nathan Torkington

  • 出版社:O'Reilly & Associates

  • 电子邮件:info@oreilly.com

  • 网址:http://www.oreilly.com/

  • 价格:39.95 美元

  • ISBN:1-56592-243-3

  • 评论者:James Lee

写 Perl 程序多年后,我仍然清楚地记得花费大量时间翻阅 O'Reilly 出版的第一版Programming Perl(也称为“骆驼书”),这是一本非常棒的书,涵盖了 Perl 编程语言直至 4.0.36 版本。那本书写得很好,技术上正确,而且非常诙谐。在第一版Programming Perl中,我特别喜欢其中的两章:“Perl 的常用任务”和“真实的 Perl 程序”,这两章包含了大量使用 Perl 的常用任务和真实程序。

1996 年,O'Reilly 出版了第二版Programming Perl,这是一本非常棒的书,涵盖了 Perl 的所有特性,包括 Perl 5 版本的新特性。这本书的篇幅从第一版的 465 页扩展到惊人的 645 页。第二版增加了许多 Perl 5 的新主题,包括对引用和面向对象编程的讨论。然而,由于篇幅所限,第一版的部分内容未能收录在第二版中。因此,第一版的部分内容被删除了,包括我最喜欢的“Perl 的常用任务”和“真实的 Perl 程序”章节。

Perl 食谱(也称为“公羊书”)是Programming Perl的配套书籍,将骆驼书第一版中真实 Perl 程序章节扩展到 757 页,内容详尽解释且有用的 Perl 代码。在这本书中,Tom Christiansen 和 Nathan Torkington 涵盖了许多主题,提供了大量代码示例,称为食谱(毕竟这是一本“食谱”)。引言声称这本书不是教程,也不是参考书,而是声明“这是一本学习更多 Perl 的书”。事实确实如此。

这是一本适合所有类型 Perl 程序员的书籍,从初学者到专家。如果您正在寻找一本包含数百个可以剪切和粘贴的示例的书,或者一本详细解释如何使用 Perl 做许多不同事情的书,那么这本书非常适合您。

本书从处理 Perl 的基本数据类型的食谱开始。以下五个主题各占一章:字符串、数字、日期和时间、数组和哈希。

第 6 章讨论了模式匹配,并详细介绍了 Perl 正则表达式的使用。

第 7、8 和 9 章讨论了文件访问、文件内容和目录。第 10 章讨论了子例程(查看本章末尾用于排序电子邮件的漂亮程序)。

第 11、12 和 13 章讨论了引用、包、库、模块、类、对象和 ties。这些主题传统上很难掌握 Perl,但我发现这些章节写得很好且易于理解。我对第 13 章末尾关于使用 tie 的部分印象特别深刻。

第 14 章涵盖了数据库访问,包括 UNIX DBM 数据库和 DBI 模块。第 15 章讨论了来自终端的用户界面、Tk 界面和 Expect 编程语言。

剩下的五章讨论了 Perl 的网络编程。主题包括进程管理和通信、套接字、互联网服务、CGI 编程和 Web 自动化。

我发现这本书非常有用,技术上非常出色,并且加载了有用且可用的源代码。例如,我最近编写了一个 CGI 程序,该程序接受用户输入的浮点数,我想使用正则表达式来验证输入的数字是否有效。我心想,“嗯,我可以自己创建正则表达式,或者看看Perl 食谱中是否涵盖了这个问题。” 注意到“懒惰”是 Perl 程序员的三大美德之一,我决定在书中查找。在目录中,我立即找到了一个标题为“检查字符串是否为有效数字”的食谱。感觉到我找到了方向,我翻到第 44 页,找到了以下正则表达式来验证正确的 C 风格浮点数

/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/

我想,花一些时间和大量的测试,我本可以想出一个有效的正则表达式。但我不需要这样做——答案在Perl 食谱中找到了。

Perl 食谱 拥有许多常见 Perl 问题的答案。需要查找列表中的所有唯一条目?请翻到第 102 页。想要创建一个哈希,但要按照输入的顺序检索哈希中的键/值对?翻到第 139 页。想要从服务器 POP 您的电子邮件?请参阅第 656 页。

我特别喜欢第 20 章,标题为“Web 自动化”。您知道仅需五行 Perl 代码即可使用 GET 方法将表单提交到 CGI 程序吗?以下示例来自第 710 页

use LWP::Simple;
use URI::URL;
my $url =
url('https://perldotcom.perl5.cn/cgi-bin/cpan_mod');
$url->query_form(module => 'DB_File', readme => 1);
$content = get($url);

镜像一个网页仅需两行代码(来自第 724 页)

use LWP::Simple;
mirror($URL, $local_filename);
这样的代码使 Perl 成为世界上最有用的编程语言。像这样的例子使Perl 食谱成为我拥有的最有用的 Perl 书籍。

本书包含大量的源代码,所有这些源代码都可以从 O'Reilly FTP 站点 (ftp://ftp.oreilly.com/published/oreilly/perl/cookbook/) 获取。在那里,您可以找到 130 多个完整的程序以及本书中的所有代码片段。

由于这是一本涵盖多个主题的食谱,因此希望深入讨论上述主题的读者应该意识到,这些主题没有进行细致的讲解。例如,关于 CGI 编程的章节只是一个简短的描述,如果您对 CGI 有一些了解,这将非常棒,但如果您正在寻找深入的讨论,您应该查看 CGI 书籍。这是有道理的——食谱不是教程。它们提供食谱,并假设您了解基础知识。

总而言之,如果您是 Perl 程序员,这本书是必不可少的。如果您是 Perl 新手,并且想成为 Perl 程序员,强烈推荐这本书作为学习更多 Perl 的工具。如果您想知道 Perl 是什么以及 Perl 可以为您做些什么,这本书值得一看。如果您还没有听说过 Perl,您都去哪里了?

Perl Cookbook
James Lee 是 Onsight (http://www.onsight.com/) 的总裁兼创始人。当他不教授 Perl 课程或在他的 Linux 机器上编写 Perl 代码时,他喜欢与孩子们共度时光,为西北野猫队加油(这是一个漫长的赛季),并梦想着他的下一次攀岩之旅。他也喜欢接收来自 james@onsight.com 的电子邮件。
加载 Disqus 评论