内容简介
第1章 简介
1.1背景知识
1.2 strict和warnings
1.3 Perl v5.14
1.4关于这些脚注
1.5关于后续的练习
1.6获取帮助的方式
1.7如果是一个Perl课程讲师
1.8练习
第2章 使用模块
2.1标准发行版
2.2探讨CPAN
2.3使用模块
2.4功能接口
2.5面向对象的接口
2.5.1一个更典型的面向对象模块:Math::BigInt
2.5.2更佳的模块输出
2.6核心模块的内容
2.7 Perl综合典藏网
2.8通过CPAN安装模块
2.8.1 CPANminus
2.8.2手动安装模块
2.9适时设定路径
2.10在程序外部设定路径
2.10.1使用PERL5LIB扩展@INC
2.10.2在命令行扩展@INC目录
2.11 local::lib
2.12练习
第3章 中级基础
3.1列表操作符
3.1.1使用grep表达式过滤列表
3.1.2使用map转换列表
3.2使用eval捕获错误
3.3用eval语句块动态编译代码
3.4使用do语句块
3.5练习
第4章 引用简介
4.1在多个数组上完成相同的任务
4.2 PeGS:Perl图形结构
4.3对数组取引用
4.4对数组引用进行解引用操作
4.5去除大括号
4.6修改数组
4.7嵌套的数据结构
4.8用箭头简化嵌套元素的引用
4.9散列的引用
4.10检查引用类型
4.11练习
第5章 引用和作用域
5.1关于数据引用的更多信息
5.2如果它曾是变量名将会怎样
5.3引用计数和嵌套数据结构
5.4当引用计数出现问题时
5.5直接创建匿名数组
5.6创建匿名散列
5.7自动带入
5.8自动带入和散列
5.9练习
第6章 操作复杂的数据结构
6.1使用调试器查看复杂的数据
6.2使用Data::Dumper模块查看复杂的数据
6.3数据编组
6.3.1使用Storable模块对复杂数据排序
6.3.2 YAML模块
6.3.3 JSON模块
6.4使用map和grep操作符
6.5应用一点间接方法
6.6选择和改变复杂数据
6.7练习
第7章 对子例程的引用
7.1对命名子例程的引用
7.2匿名子例程
7.3回调
7.4闭包
7.5从一个子例程返回另一个子例程
7.6作为输入参数的闭包变量
7.7闭包变量作为静态局部变量
7.8查询我们自己的身份
7.8.1令人着迷的子例程
7.8.2转储闭包
7.9练习
第8章 文件句柄引用
8.1旧方法
8.2改进的方法
8.3指向字符串的文件句柄
8.4文件句柄集合
8.5 IO::Handle模块和其他相应的模块
8.5.1 IO::File模块
8.5.2 IO::Scalar模块
8.5.3 IO::Tee模块
8.5.4 IO::Pipe模块
8.5.5 IO::Null模块和IO::Interactive模块
8.6目录句柄
8.7练习
第9章 正则表达式引用
9.1正则表达式引用之前
9.2预编译模式
9.2.1正则表达式选项
9.2.2应用正则表达式引用
9.3作为标量的正则表达式
9.4建立正则表达式
9.5创建正则表达式的模块
9.5.1使用常见的模式
9.5.2组装正则表达式
9.6练习
第10章 实用的引用技巧
10.1更佳的输出
10.2用索引排序
10.3更为高效的排序
10.4施瓦茨变换
10.5使用施瓦茨变换实现多级排序
10.6递归定义的数据
10.7构建递归定义的数据
10.8显示递归定义的数据
10.9避免递归
10.10练习
第11章 构建更大型的程序
11.1修改通用代码
11.2使用eval插入代码
11.3使用do语句
11.4使用require语句
11.5命名空间冲突的问题
11.6使用包作为命名空间分隔符
11.7 Package指令的作用域
11.8包和专门词汇
11.9练习
第12章 创建你自己的发行版
12.1 Perl模块的两个构建系统
12.1.1在Makefile.PL内部
12.1.2在Build.PL文件内部
12.2我们的第一个发行版
12.2.1 h2xs工具
12.2.2 Module::Starter模块
12.2.3定制模版
12.3在你的发行版内部
12.3.1 META文件
12.3.2添加额外的模块
12.4模块内部
12.5老式文档
12.5.1段落的Pod命令
12.5.2 Pod段落
12.5.3 Pod格式标记
12.5.4检查Pod格式
12.6模块中的代码
12.7模块构建的总结
12.7.1创建基于Module::Build模块的发行版
12.7.2创建ExtUtils::Makemaker发行版
12.8练习
第13章 对象简介
13.1如果我们可以和动物对话
13.2介绍方法的调用箭头
13.3方法调用的额外参数
13.4调用第二个方法进一步简化
13.5关于@ISA的几个注意事项
13.6方法重写
13.7开始从不同的地方查找
13.8使用SUPER的实现方法
13.9要对@_做些什么
13.10我们在哪里
13.11牧场总结
13.12练习
第14章 测试简介
14.1为什么需要测试
14.2 Perl的测试流程
14.3测试的艺术
14.4测试用具
14.5标准测试
14.5.1模块编译的检查
14.5.2模板测试
14.5.3测试Pod
14.6添加第一个测试
14.7测量测试覆盖率
14.7.1子例程覆盖率
14.7.2语句覆盖率
14.7.3分支覆盖率
14.7.4条件覆盖率
14.8练习
第15章 带数据的对象
15.1马属于马类,各从其类是吗
15.2调用实例方法
15.3访问实例数据
15.4如何构建Horse的实例
15.5继承构造函数
15.6编写能够使用类或实例作为参数的方法
15.7为方法添加参数
15.8更有趣的实例
15.9一匹不同颜色的马
15.10收回存款
15.11不要查看“盒子”里面的内容
15.12更快的setter和getter
15.13 getter作为双倍的setter
15.14仅仅限制一个类方法或者实例方法
15.15练习
第16章 一些高级对象主题
16.1通用方法
16.2为了更好的行为而测试对象
16.3最后的手段
16.4使用AUTOLOAD创建访问器
16.5更容易地创建getter和setter
16.6多重继承
16.7练习
第17章Exporter
17.1 use语句在做什么
17.2使用Exporter模块导入子例程
17.3@EXPORT和@EXPORT_OK
17.4使用7.515648E-318XPORT TAGS分组
17.5定制导入例程
17.6练习
第18章 对象析构
18.1清理
18.2嵌套对象析构
18.3终结一个“死去”的Horse类
18.4间接对象表示法
18.5子类中的额外实例
18.6使用类变量
18.7削弱参数
18.8练习
第19章 Moose简介
19.1用Moose模块创建之前的Animal模块
19.1.1使用“角色”替换“继承”
19.1.2默认值
19.1.3约束值
19.1.4封装方法
19.1.5只读属性
19.2改进的赛马类
19.3进一步学习
19.4练习
第20章 高级测试
20.1跳过测试
20.2测试面向对象特性
20.3分组测试
20.4测试大型字符串
20.5测试文件
20.6测试STDOUT和STDERR
20.7使用模拟对象
20.8编写我们自己的Test::*测试模块
20.9练习
第21章 贡献到CPAN
21.1 Perl综合典藏网
21.2准备阶段
21.3 PAUSE的工作方式
21.3.1索引器
21.3.2模块维护人员
21.4在我们开始工作之前
21.5准备发行版
21.5.1创建或更新README
21.5.2检查构建文件
21.5.3更新清单
21.5.4添加版本字符串
21.5.5测试发行版
21.6上传发行版
21.7在多个平台上测试
21.8发布模块
21.9练习
附录 练习答案