目录
第1章 简介1
1.1 背景知识2
1.2 strict和warnings2
1.3 Perl v5.143
1.4 关于这些脚注4
1.5 关于后续的练习4
1.6 获取帮助的方式5
1.7 如果是一个Perl课程讲师5
1.8 练习6
第2章 使用模块7
2.1 标准发行版7
2.2 探讨CPAN8
2.3 使用模块9
2.4 功能接口10
2.5 面向对象的接口11
2.5.1 一个更典型的面向对象模块:Math::BigInt12
2.5.2 更佳的模块输出13
2.6 核心模块的内容14
2.7 Perl综合典藏网15
2.8 通过CPAN安装模块16
2.8.1 CPANminus16
2.8.2 手动安装模块17
2.9 适时设定路径18
2.10 在程序外部设定路径20
2.10.1 使用PERL5LIB扩展@INC20
2.10.2 在命令行扩展@INC目录21
2.11 local::lib21
2.12 练习23
第3章 中级基础24
3.1 列表操作符24
3.1.1 使用grep表达式过滤列表25
3.1.2 使用map转换列表27
3.2 使用eval捕获错误28
3.3 用eval语句块动态编译代码30
3.4 使用do语句块31
3.5 练习32
第4章 引用简介33
4.1 在多个数组上完成相同的任务33
4.2 PeGS:Perl图形结构35
4.3 对数组取引用36
4.4 对数组引用进行解引用操作38
4.5 去除大括号40
4.6 修改数组40
4.7 嵌套的数据结构41
4.8 用箭头简化嵌套元素的引用43
4.9 散列的引用44
4.10 检查引用类型47
4.11 练习49
第5章 引用和作用域51
5.1 关于数据引用的更多信息51
5.2 如果它曾是变量名将会怎样52
5.3 引用计数和嵌套数据结构53
5.4 当引用计数出现问题时55
5.5 直接创建匿名数组57
5.6 创建匿名散列59
5.7 自动带入61
5.8 自动带入和散列63
5.9 练习65
第6章 操作复杂的数据结构67
6.1 使用调试器查看复杂的数据67
6.2 使用Data::Dumper模块查看复杂的数据71
6.3 数据编组74
6.3.1 使用Storable模块对复杂数据排序75
6.3.2 YAML模块80
6.3.3 JSON模块81
6.4 使用map和grep操作符81
6.5 应用一点间接方法81
6.6 选择和改变复杂数据83
6.7 练习84
第7章 对子例程的引用86
7.1 对命名子例程的引用86
7.2 匿名子例程90
7.3 回调92
7.4 闭包93
7.5 从一个子例程返回另一个子例程94
7.6 作为输入参数的闭包变量97
7.7 闭包变量作为静态局部变量98
7.8 查询我们自己的身份101
7.8.1 令人着迷的子例程102
7.8.2 转储闭包105
7.9 练习105
第8章 文件句柄引用107
8.1 旧方法107
8.2 改进的方法108
8.3 指向字符串的文件句柄110
8.4 文件句柄集合111
8.5 IO::Handle模块和其他相应的模块112
8.5.1 IO::File模块113
8.5.2 IO::Scalar模块114
8.5.3 IO::Tee模块115
8.5.4 IO::Pipe模块116
8.5.5 IO::Null模块和IO::Interactive模块117
8.6 目录句柄117
8.7 练习118
第9章 正则表达式引用120
9.1 正则表达式引用之前120
9.2 预编译模式122
9.2.1 正则表达式选项123
9.2.2 应用正则表达式引用123
9.3 作为标量的正则表达式124
9.4 建立正则表达式126
9.5 创建正则表达式的模块128
9.5.1 使用常见的模式128
9.5.2 组装正则表达式129
9.6 练习130
第10章 实用的引用技巧132
10.1更佳的输出132
10.2 用索引排序134
10.3 更为高效的排序135
10.4 施瓦茨变换136
10.5 使用施瓦茨变换实现多级排序137
10.6 递归定义的数据138
10.7 构建递归定义的数据139
10.8 显示递归定义的数据142
10.9 避免递归143
10.10 练习146
第11章 构建更大型的程序148
11.1 修改通用代码148
11.2 使用eval插入代码149
11.3 使用do语句150
11.4 使用require语句151
11.5 命名空间冲突的问题153
11.6 使用包作为命名空间分隔符154
11.7 Package指令的作用域156
11.8 包和专门词汇157
11.9 练习159
第12章 创建你自己的发行版160
12.1 Perl模块的两个构建系统160
12.1.1 在Makefile.PL内部161
12.1.2 在Build.PL文件内部162
12.2 我们的第一个发行版163
12.2.1 h2xs工具163
12.2.2 Module::Starter模块164
12.2.3 定制模版165
12.3 在你的发行版内部165
12.3.1 META文件167
12.3.2 添加额外的模块168
12.4 模块内部169
12.5 老式文档171
12.5.1 段落的Pod命令172
12.5.2 Pod段落172
12.5.3 Pod格式标记173
12.5.4 检查Pod格式174
12.6 模块中的代码174
12.7 模块构建的总结175
12.7.1 创建基于Module::Build模块的发行版175
12.7.2 创建ExtUtils::Makemaker发行版176
12.8 练习176
第13章 对象简介177
13.1 如果我们可以和动物对话177
13.2 介绍方法的调用箭头179
13.3 方法调用的额外参数180
13.4 调用第二个方法进一步简化181
13.5 关于@ISA的几个注意事项183
13.6 方法重写184
13.7 开始从不同的地方查找186
13.8 使用SUPER的实现方法186
13.9 要对@_做些什么187
13.10 我们在哪里187
13.11 牧场总结187
13.12 练习189
第14章 测试简介190
14.1 为什么需要测试190
14.2 Perl的测试流程191
14.3 测试的艺术193
14.4 测试用具195
14.5 标准测试195
14.5.1 模块编译的检查196
14.5.2 模板测试198
14.5.3 测试Pod200
14.6 添加第一个测试201
14.7 测量测试覆盖率204
14.7.1 子例程覆盖率205
14.7.2 语句覆盖率205
14.7.3 分支覆盖率205
14.7.4 条件覆盖率206
14.8 练习206
第15章 带数据的对象208
15.1 马属于马类,各从其类是吗208
15.2 调用实例方法210
15.3 访问实例数据211
15.4 如何构建Horse的实例211
15.5 继承构造函数212
15.6 编写能够使用类或实例作为参数的方法213
15.7 为方法添加参数213
15.8 更有趣的实例214
15.9 一匹不同颜色的马215
15.10 收回存款216
15.11 不要查看“盒子”里面的内容217
15.12 更快的setter和getter218
15.13 getter作为双倍的setter219
15.14 仅仅限制一个类方法或者实例方法219
15.15 练习220
第16章 一些高级对象主题221
16.1 通用方法221
16.2 为了更好的行为而测试对象222
16.3 最后的手段224
16.4 使用AUTOLOAD创建访问器225
16.5 更容易地创建getter和setter226
16.6 多重继承228
16.7 练习229
……
第17章Exporter
第18章对象析构
第19章Moose简介
第20章高级测试
第21章贡献到CPAN
附录练习答案
· · · · · · (
收起)