第1章 概述 1
1.1 软件开发的现状 1
1.2 为什么选择Perl 1
1.3 Perl的环境 2
1.4 Perl的语言 2
1.5 联机文档 3
1.5.1 Windows中的Perl文档 4
1.5.2 perldoc命令 5
1.5.3 MacPerl中的Perl文档 8
1.6 参考文献 8
第2章 Perl程序开发之禅机 10
2.1 态度 10
2.2 观念 11
2.3 行为 12
2.3.1 整洁 12
2.3.2 沟通 12
2.3.3 测试 13
2.3.4 精确 13
2.4 提高技巧 13
2.5 底线 13
第3章 逆向调试 15
3.1 开始 15
3.2 编写代码 15
3.2.1 风格 16
3.2.2 从编辑器获得帮助 16
3.2.3 勤于思考 17
3.2.4 清晰 18
3.3 观察 19
3.4 文档 20
3.5 开发 22
3.6 防止意外事件 23
3.6.1 严格 23
3.6.2 警告信息的处理 24
3.7 降低复杂性的技巧 25
3.7.1 减少临时变量 26
3.7.2 减少出错的范围 27
第4章 Perl的陷阱 30
4.1 按照语法修饰代码 30
4.1.1 默认的变量 30
4.1.2 不用括号的情况 32
4.1.3 | |的多种用法 34
4.2 运算符优先级 35
4.2.1 Regex结合 37
4.2.2 键上的数学运算 37
4.3 正则表达式 38
4.4 其他 38
4.4.1 自动激活 38
4.4.2 split函数 39
4.4.3 保留词 40
4.4.4 秘密原型 42
4.4.5 循环范围 43
第5章 跟踪代码 44
5.1 转储数据 45
5.2 使跟踪代码可选 45
5.3 使用标志 46
5.4 通过命令行方式 48
5.5 麻烦的办法 50
第6章 测试Perl程序 52
6.1 检查代码 53
6.2 单元测试 53
6.2.1 单行测试 54
6.2.2 断言 55
6.2.3 按约定设计 55
6.3 系统或退化测试 55
6.4 负载测试 59
6.5 验收测试 59
6.6 参考文献 60
第7章 Perl调试器 61
7.1 基本操作 61
7.2 开始 61
7.2.1 查看代码的运行:s,n,r 62
7.2.2 检查变量:p,x,V 64
7.2.3 检查源程序:1,-,w,. 65
7.2.4 沙箱原理 65
7.2.5 断点:c,b,L 66
7.2.6 采取行动:a,A 67
7.2.7 查看:W 68
7.2.8 跟踪:t 69
7.2.9 与调试器的程序化交互 69
7.2.10 优化 70
7.2.11 另一个“Gotcha” 71
7.3 图形化初步 71
7.3.1 ddd 71
7.3.2 ptkdb 72
7.3.3 Emacs 73
第8章 语法错误 74
8.1 打字错误分类 74
8.1.1 字符短缺 75
8.1.2 疑问 77
8.1.3 字符多余 77
8.1.4 符号替换 78
8.1.5 符号位置改变 79
8.2 打字错误浏览 80
8.2.1 可引用的引号 80
8.2.2 大写错误 81
第9章 运行时异常 83
9.1 符号引用 84
9.2 检查返回代码 88
9.3 编写自己的异常程序 89
9.4 利用捕获功能 90
9.5 对程序错误更加明了 92
第10章 语意错误 94
10.1 不合逻辑 94
10.2 读取目录 94
10.3 但是它的意思是什么 96
10.4 printf格式不利用上下文 99
10.5 条件my 99
10.6 引入closure 100
第11章 资源缺乏 102
11.1 先为人作优化,然后再为资源作优化 102
11.2 利用基准程序进行测试 103
11.2.1 检测内存的使用情况 103
11.2.2 检查CPU的使用情况 104
11.2.3 专家的要求 106
11.3 做得更好 108
11.3.1 提高运行速度 108
11.3.2 提高内存利用率 111
11.3.3 提高磁盘空间利用率 114
第12章 把Perl作为第二编程语言 116
12.1 给所有人的提示 116
12.2 给C程序员的提示 116
12.3 给FORTRAN程序员的提示 118
12.4 给Shell程序员的建议 119
12.5 给C++或Java程序员的建议 120
12.5.1 给Java程序员的特别建议 121
12.5.2 给C++程序员的特别建议 122
第13章 调试CGI程序 123
13.1 CGI 123
13.2 Web服务器 124
13.3 500-服务器错误 124
13.4 基础 125
13.5 安全 125
13.5.1 感染模式 126
13.5.2 在感染模式下进行调试 127
13.6 拦截错误 128
13.7 cgi检测 129
13.8 监听 129
13.9 CGI.pm 133
13.10 命令行检测 133
13.11 程序中间退出 134
13.12 调试器交互 135
13.13 ptkdb调试器 137
第14章 结论 139
14.1 结尾 139
14.2 结束 139
14.3 这次真的是结束 140
附录A Perl调试器命令 141
A.1 普通语法 141
A.1.1 续行 141
A.1.2 分页 141
A.1.3 命令历史 141
A.1.4 Shell交互 141
A.1.5 赋予命令别名 142
A.2 命令 142
A.2.1 帮助 142
A.2.2 停止或重启 142
A.2.3 单步 142
A.2.4 检查包中数据 142
A.2.5 检查包或文字数据 143
A.2.6 显示版本信息 143
A.2.7 设置断点 143
A.2.8 动作 144
A.2.9 动作/断点显示 144
A.2.10 栈显示 144
A.2.11 列举源代码 144
A.2.12 追踪 145
A.2.13 观察点 145
A.2.14 提示-时间动作 145
A.2.15 选项设置 145
A.2.16 Perl代码 145
A.3 选项 146
A.3.1 影响命令V、X和x的选项 146
A.3.2 影响异常处理的选项 146
A.3.3 影响其他程序的控制的选项 147
A.3.4 其他选项 147
A.4 环境变量 148
附录B Perl格言 149