标题：Perl高效编程（第2版）
基本信息
原书名：     Effective Perl Programming: Ways to Write Better, More Idiomatic Perl
原出版社：     Addison Wesley Professional
丛书名：     图灵原版计算机科学系列
分类：     计算机
计算机 >> 程序设计
作者：     Joseph N. Hall, brian d foy, Josh McAdams
译者：     胜春、王晖、张东亮、蒋永清
出版日期：     2011-05-06
语种：     简体中文
开本：     16开
页数：     332
定价：     65.00 元人民币
摘要
本书是Perl 编程领域的“圣经级”著作。它提供了一百多个详实的应用案例，足以涵盖编程过程中经常遇到的方方面面，由此详细阐释出各种高效且简洁的写法。本书第1 版曾畅销十年之久，而在第2 版中不仅修正了前版存在的一些问题，更与时俱进地引入了许多Perl 领域的新主题，使内容更加完善丰富，也更具实用性。
本书为初级Perl 程序员铺就了一条通往高阶之路，而对高级Perl 程序员来说，本书也是必备的技术参考。
序言
十年前，当我开始学习Perl的时候，我认为自己对这门语言已经了解得很多了——没错，对这门语言本身，我确实知道得很多。而我所不知道的，则是那些真正赋予Perl力量的惯用方法和其他灵活的语法结构。尽管不用它们也能写出绝大多数程序，但不掌握这些，则意味着自己的知识结构还不够完善，自己的工作效率也远远达不到理想状态。
我是幸运的，因为我得到了本书的第1版。不过，那本书从来没有机会停留在我的书架上，它一直都在我的包里，一有空我就会打开来读一段。
Joseph N. Hall这本书的内容编排简单得让人爱不释手，每一段内容虽短，但都饱含智慧，而且讲得十分明白透彻。不瞒您说，我们免费的Perl Tips电子报，正是受了本书的启发才创刊的，这份电子报一直致力于探讨Perl及其社区的发展。
对于一门语言来说，十年意味着很大的变化，而社区对语言的认知则有更大的变化。因此，让我非常高兴的不仅是听到这本书的第2版即将出版的消息，更重要的是这个新版本出自Perl社区最杰出的两位成员之手。
不用说，brian对Perl的全心投入是有目共睹的。他不仅写了很多Perl语言方面的书，还负责出版一份杂志（The Perl Review），并且维护着Perl官方网站中的FAQ（常见问题解答），另外他在众多Perl及编程语言社区一直享有盛誉。
而Josh则以他运营的著名播客网站Perlcast闻名，他从2005年就开始在这个网站中以音频形式播放Perl新闻了。Josh总能找到那些著名的、有趣的人，对他们进行采访，这使他自己快速积累了大量知识，也让我对他羡慕不已。
总之，能向亲爱的读者朋友推荐这本书的第2版，我感到荣幸之至。希望它能让你真正掌握这门语言的精髓，就像当年第1版对我的启蒙那样。
Paul Fenwick
Perl Training Australia总裁
目录
第1 章  Perl 基础     1
条款1  查阅Perl 及其模块的文档     1
条款2  在需要时开启Perl 新特性     3
条款3  打开约束指令，让编码更规范     4
条款4  了解魔符的含义       7
条款5  弄清变量名字空间       8
条款6  了解字串和数值比较间的差异     9
条款7  弄清何时变量为假，并依此作出正确判别     11
条款8  理解字符串和数字之间的转换       14
条款9  弄清列表和数组间的差别           17
条款10  如需空数组，请勿用undef 赋值         19
条款11  仅需单个元素时请勿用切片     21
条款12  理解上下文及其对操作的影响     25
条款13  用数组或散列集结一组数据     27
条款14  用bignum 处理大数        29
第2 章  Perl 的地道用法       31
条款15  为优雅、简洁而使用$_         32
条款16  了解其他默认参数          35
条款17  常见简写和双关语          37
条款18  避免过分依赖标点符号     41
条款19  调整列表格式以便于维护         43
条款20  善用foreach、map 和grep      44
条款21  了解各种字符串引用方法         47
条款22  掌握多种排序方式          50
条款23  通过智能匹配简化工作     54
条款24  用given-when 构造switch 语句      55
条款25  用do {}创建内联子程序        58
条款26   用List::Util 和List::MoreUtils 简化列表处理     60
条款27  用autodie 简化错误处理      63
第3 章 正则表达式         66
条款28  了解正则表达式操作符的优先级        66
条款29  使用正则表达式的捕获功能     69
条款30  使用更精确的空白字符组         74
条款31  使用命名捕获，给匹配加标签     77
条款32  仅需分组时，用非捕获括号     78
条款33  小心处理匹配变量         79
条款34  能懒则懒，不要贪婪         81
条款35  用零宽断言匹配字串中的特定位置       82
条款36  简单字串处理应避免使用正则表达式   85
条款37  提高正则表达式的可读性         87
条款38  避免不必要的回溯         90
条款39  仅编译正则表达式一次     93
条款40  预编译正则表达式      94
条款41  正则表达式的性能评测     95
条款42  不要滥造正则表达式         97
第4 章  子程序        99
条款43  理解my 和local 之间的差异     99
条款44  若非必要请勿直接使用@_      106
条款45  用wantarray 按需返回列表        108
条款46  传递引用而非副本       110
条款47  用散列传递命名参数       113
条款48  通过参数原型声明以特殊方式解析参数     116
条款49  创建闭包锁住数据        118
条款50  用子程序创建新子程序        121
第5 章  文件与文件句柄          124
条款51  不要忽略文件测试操作符       124
条款52  始终以三项参数的形式调用open       126
条款53  采用不同方式读取数据流       127
条款54  处理字符串的文件句柄        129
条款55  灵活的输出方式          132
条款56  用File::Spec 或Path::Class 处理文件路径         134
条款57  将数据留于磁盘以节约内存       136
第6 章  引用          139
条款58  理解引用和引用的语法           139
条款59  将引用类型和原型进行比较       145
条款60  通过引用创建包含数组的数组             147
条款61  别将匿名数组和列表直接量搞混淆     149
条款62  通过匿名散列创建C 风格的struct 结构         150
条款63  小心循环数据结构         152
条款64  用map 和grep 操作复杂数据结构    154
第7 章  CPAN       158
条款65  以非管理员权限安装CPAN 模块       159
条款66  拥有自己的CPAN        161
条款67  减少公共代码带来的风险       164
条款68  安装模块前先行调研       166
条款69  确保Perl 能找到我们的模块       168
条款70  为CPAN 作贡献         171
条款71  了解常用模块         173
第8 章  Unicode      176
条款72  在源代码中使用Unicode 字符     177
条款73  告诉Perl 该用何种编码方式       179
条款74  通过代码值或名字输入Unicode 字符     180
条款75  位组字串转换到字符字串       182
条款76  Unicode 字符和属性的模式匹配       185
条款77  同字素打交道，而不是字符       188
条款78  谨慎处理数据库中的Unicode      190
第9 章  软件分发     192
条款79  用Module::Build 构建发行版       192
条款80  不必手工新建软件发行版       194
条款81  给模块取个好名字           198
条款82  在代码中嵌入Pod 文档           201
条款83  限制我们的发行版用于特定平台         204
条款84  检查Pod 文档         206
条款85  嵌入其他语言代码           209
条款86  用XS 链接低级语言，提高运行速度     211
第10 章  测试        215
条款87  用prove 灵活运行测试         215
条款88  有目的性地运行测试       218
条款89  用依赖注入避免特殊测试逻辑          220
条款90  避免给方法引入不必要的东西          222    
条款91  把程序写成模块便于测试     224
条款92  用虚拟的对象或接口测试     227
条款93  用SQLite 创建测试用数据库             231
条款94  用Test::Class 编写结构化测试    232
条款95  项目一开始就准备好测试     235
条款96  度量测试覆盖率        240
条款97  把CPAN Testers 当作QA 团队       243
条款98  设置持续编译系统        244
第11 章  警告信息         250
条款99  启用警告功能定位可疑代码     250
条款100  利用词法作用域选择性启用或关闭警告      253
条款101  用die 抛出异常         255
条款102  用Carp 来获得栈跟踪信息      256
条款103  正确处理异常         259
条款104  通过污染检查跟踪危险数据        261
条款105  对老旧程序启用污染警告       263
第12 章  数据库       265
条款106  预备SQL 语句以复用并节省时间   265
条款107  利用SQL 占位符将参数值自动引起      268
条款108  通过绑定返回列快速访问数据         270
条款109  复用数据库连接          272
第13 章  杂项        275
条款110  编译并安装自己的perl 解释器     275
条款111  用Perl::Tidy 美化代码     277
条款112  使用Perl Critic             280
条款113  用Log::Log4perl 记录程序运行状态         284
条款114  明白循环内的数组何时会被修改     289
条款115  不要用正则表达式提取逗号分隔的字串        290
条款116  用unpack 处理固定列宽的数据    291
条款117  用pack 和unpack 对数据作变形处理       293
条款118  借用typeglob 访问符号表       298
条款119  用BEGIN 初始化，以END 善后     300
条款120  用单行Perl 命令作为迷你程序        302
附录  Perl 资源      307