前言 1
第一部分 Perl入门 5
第一章Perl在编程领域中的地位 7
1.1 编程的目的 7
1.2 使计算机进行计算 8
1.3 把我们的语言翻译成计算机语言 9
1.4 计算机语言设计的考虑 10
1.5 Perl的优点 11
1.6 Perl的版本 12
1.7 Perl 5.6的新特征 14
1.8 Perl的将来 15
2.1 Perl不再只适用于UNIX 17
第二章 在计算机上运行Perl 17
2.1.1 Perl在不同操作系统上的名称 18
2.1.2 从Internet上获取最新版本 18
2.2 UNIX:Perl的第一个版本 18
2.2.1 确定是否要在UNIX上使用Perl 18
2.3 在UNIX上安装Perl 20
2.4 在UNIX上运行Perl程序 21
2.5 Windows 95/98和Windows NT上的ActivePerl 22
2.5.1 在Windows下安装ActivePerl 22
2.5.2 在DOS窗口中运行ActivePerl 23
2.6.1 安装MacPerl 25
2.6 MacPerl:用户所期望的Mac友好界面 25
2.6.2 运行MacPerl程序 26
2.7 命令行上的Perl 27
2.7.1 输入命令行选项的方法 27
2.7.2 -c选项 28
2.7.3 -w选项 28
2.7.4 -v选项 28
2.7.5 -e选项 29
2.7.6 -i选项 29
2.7.7 -d选项 29
2.8 其他的Perl 29
3.1 文本编辑器 31
第三章Perl内核揭秘 31
3.2 了解Perl程序的某些基本组件 32
3.2.1 执行一条语句 32
3.2.2 循环 32
3.2.3 插入注释 32
3.3 语句:Perl程序的组成 33
3.3.1 语句的结束 34
3.3.2 语句块 35
3.3.3 操作符和函数 37
3.4 在语句中使用制表符:缩进和间隔 37
3.4.1 缩进显示语句块 38
3.4.2 给命令行添加额外的空格 39
3.5 数字和文本 39
3.6 变量和字面量 40
3.6.1 为什么总是要先给变量赋值 42
3.6.2 Perl的特殊变量 43
3.6.3 默认变元 43
第四章Perl程序样例 45
4.1 样例程序的内核 45
4.1.1 运行counterl.pl程序 50
4.2 拥有更多功能的第二个程序 52
4.1.2 查看程序运行的结果 52
4.2.1 剖析样例程序 54
4.2.2 运行empdatal.pl样例程序 58
4.3 避免最常见的错误 59
4.3.1 忘记输入分号 59
4.3.2 忘记输入引号 59
4.3.3 输入的圆括号过多或过少 60
第二部分Perl的基本编程要素 61
第五章 文本 63
5.1 检查工作:print语句 63
5.2 定义字符串 64
5.3.2 已定义的值和未定义的值 65
5.3.1 数值与字符的转换 65
5.3 可显示字符串和字符值 65
5.3.3 93个可显示的标准字符 66
5.3.4 文本中的特殊字符 66
5.4 引用文本 69
5.4.1 单引号与双引号的比较 70
5.4.2 引用文本的函数 71
5.4.3 显示许多内容 71
5.5 字符串的处理 72
5.5.1字符串的相加 72
5.5.3 去掉字符串的结尾 73
5.5.2 进行多次拷贝 73
5.6 简单的字符串转换 74
5.7 从字符串中获取信息 75
5.8 在Perl 5.6中的其他字符 76
5.8.1 Unicode和UTF-8 76
5.8.2 在程序中输入UTF-8 77
5.8.3 使用国际通用字符 78
第六章 数学 79
6.1 比较整型和实型 79
6.2 使用Perl的基本数学运算符 80
6.2.1 用于简单计算的运算符 80
6.2.2 圆括号和代数计算 80
6.2.3 正负值运算符 81
6.2.4 指数计算运算符 82
6.2.5 取模运算符 82
6.3 同时进行数学运算和赋值 82
6.4 自动递增和自动递减 83
6.5 简单的数学函数 85
6.6 把数值转换为字符串 85
6.7 在非十进制系统中进行计数 86
第七章 列表 89
7.1 列表基础 89
7.1.2 字面量列表 90
7.1.1 列表的基本构成 90
7.1.3 变量名 91
7.1.4 空列表 91
7.2 指定列表的分隔 92
7.3 使用列表简化基本任务 93
7.4 使用print语句和列表 95
7.5 添加和删除列表元素 96
7.5.1 push和unshift函数 96
7.5.2 shift和pop函数 96
7.5.3 splice函数 97
7.6 用split函数拆分字符串 99
7.8 应用已有的列表 101
7.7 使用标量变量 101
7.9 区别上下文的类型 102
第八章 创建条件和循环 105
8.1 逻辑:If/Then语句和值的比较 105
8.2 条件语句 109
8.2.1 else和elsif语句 109
8.2.2 unless语句 110
8.2.3 条件运算符 110
8.3 循环的使用 110
8.3.1 使用whlie语句来执行循环 111
8.3.2 避免无限循环 111
8.3.3 next和last语句 112
8.3.4 for语句 113
8.3.5 map语句 115
8.4 用表达式作为逻辑值 115
8.4.1 open函数 116
8.4.2 短路逻辑:and和or运算符 116
8.5 留心:使用标签在程序中跳转 117
第九章 利用运算符和函数执行高级任务 119
9.1 使用未定义的变量 119
9.2 查找字符串中的子字符串 120
9.2.1 使用substr函数 120
9.2.3 使用reindex函数 122
9.2.2 使用index函数 122
9.3 对文本和数字进行格式化 123
9.4 跟踪时间 128
9.5 使用随机数 131
9.6 使用位级运算符处理位 132
9.7 把列表转换为字符串 133
9.8 重新安排列表 134
第三部分Perl内核揭秘 137
第十章Perl和CGI:Web服务器程序揭秘 139
10.1 用Perl编写CGI程序 139
10.2.1 从变量中获取信息 141
10.2 使用环境变量 141
10.2.2 执行查询 142
10.2.3 确定请求的源 143
10.3 从HTML窗体上收集信息 144
10.3.1 获取窗体数据的方法 145
10.3.2 拆分连接在一起的响应 146
10.3.3 提取要用作Perl变量的值 147
10.4 给用户显示输出 147
10.5 创建HTML窗体 149
10.6 使用重定向功能链接到其他站点上 150
10.7.2 用于服务器的信息 155
10.7.1 用于其他客户机的信息 155
10.7 几个其他的环境变量 155
10.7.3 用于用户验证 156
第十一章 文件的输入输出 157
11.1 文件的定义:Perl文件类型 157
11.2 文件的打开和关闭 158
11.2.1 给文件赋予句柄 158
11.2.2 读、写或追加:选择文件打开的模式 159
11.2.3 确定文件是否已经打开 160
11.2.4 打开文件后使用它 160
11.2.5 关闭文件 161
11.3 为不同的操作系统指定文件名和目录 161
11.4 读取文本文件 163
11.5 文本文件的写入 165
11.6 对从文件中获取信息进行测试 167
11.7 在UNIX中移动文件流:标准输入、标准输出和标准错误 169
11.7.1 区分三个主要的文件流 170
11.7.2 在程序中输入输出数据 171
第十二章 文件和目录基础 173
12.1 读写二进制文件 173
12.1.1 跟踪自己在文件中的位置 174
12.1.2 写入二进制文件 175
12.1.3 强迫二进制读 175
12.2.1 重命名文件 176
12.2 改变文件的属性 176
12.1.4 一次读取一个字符 176
12.2.2 改变文件访问和修改的时间 177
12.2.3 删除文件 177
12.3 文件的组合:按匹配的字符组合文件 178
12.4 UNIX用户可以使用的文件功能 179
12.4.1 chown和chmod的Perl版本 179
12.4.2 用函数创建链接 180
12.5 获取文件中的统计数据 180
12.6.1 打开目录 181
12.6 目录:处理文件组 181
12.6.2 返回目录中的文件名 182
12.6.3 操作目录 182
12.6.4 创建和删除目录 183
第十三章 字符串:类型匹配和规则表达式 185
13.1 规则表达式 185
13.1.1 利用m//操作符进行真-假搜索 186
13.1.2 使语句更简短 187
13.1.3 给指定的匹配字符记数 188
13.2 在规则表达式中进行“非精确”匹配 188
13.2.3 使用通配符来匹配字符 189
13.2.4 匹配字符组 189
13.2.1 替代匹配 189
13.2.2 把类似的条目用括号括起来 189
13.3 位置:在某个特定的地方搜索 191
13.4 使用格式符匹配数字 191
13.5 获取匹配的结果 193
13.6 使用m//操作符的更多编程技巧 195
13.6.1 使用m//操作符和修改符 195
13.6.2 m//操作符中的全程搜索 196
13.6.3 在一个字符串中搜索多行 197
13.7 UNIX用户喜欢的函数 198
13.8 用S///操作符进行简单的替代 199
13.8.1 在替代过程中使用匹配结果 199
13.9 使用split函数和更高级的规则表达式 200
13.8.2 在S///操作符的替代文本中使用表达式 200
13.9.1 引用单词 201
13.9.2 返回split函数的分隔符 201
13.10 杂项转换:使用tr///操作符 202
第十四章 子例程、输入的代码和正常退出 203
14.1 利用子例程节省时间 203
14.1.1 构建子例程 204
14.1.2 使用子例程可节省精力、避免错误 205
14.1.3 局部变量my:使用my和local函数 206
14.1.4 子例程的返回值 208
14.2 把预先编写好的Perl代码输入到程序中 210
14.2.2 帮助Perl搜索被包括文件中的库 211
14.2.1 给包括进来的文件添加一条需要的语句 211
14.2.3 把程序打包到软件包中 213
14.2.4 包括代码,而不是子例程 213
14.3 正常退出Perl程序 214
14.3.1 die函数 214
14.3.2 exit函数 215
14.3.3 构建die和exit语句 215
第四部分 Perl高级议题 217
第十五章 Perl与Web、E-Mail和XML 219
15.1 使用libwww-perl库 219
15.1.1 在NUIX上安装libwww-perl 220
15.1.2 从Web和FTP上获取文档 220
15.1.3 使用Perl程序测试Web链接 221
15.1.4 使用libwww-perl和对象 224
15.2 接收E-Mail 224
15.2.1 访问模块Mail::POP3Client 225
15.2.2 创建一个简单的客户对象 226
15.2.3 处理邮件箱中报表的程序 227
15.3 Web编程展望:Perl和XML 228
15.3.1 XML的定义 229
15.3.2 XML的外观 229
15.3.3 XML和Perl的结合 230
15.3.4 用Perl处理XML 230
15.3.6 分析XML文档 231
15.3.5 使用XML::Parser 231
16.1 相关阵列基础 235
第十六章 相关阵列和多维列表 235
16.1.1 按照条目的键值进行定位 236
16.1.2 相关阵列和标准列表的比较 237
16.1.3 创建相关阵列 237
16.1.4 给相关阵列添加记录 238
16.1.5 删除记录 238
16.1.6 使用keys函数查看记录 238
16.1.7 使用vach函数返回值 238
16.1.8 步进each函数 239
16.2 把相关阵列的数据写入文件 240
16.1.9 查看已有的记录 240
16.3 创建多维列表 241
16.3.1 创建二维列表 241
16.3.2 一次访问一个列表元素 242
16.3.3 给二维列表添加行和列 243
16.4 创建包含列表的相关阵列 244
16.5 把多维列表写入文件 246
16.5.1 用于二维列表的文本文件 246
16.5.2 用于多维列表的文本文件 246
17.1 使用相关阵列管理数据库 249
第十七章 数据库 249
17.3 关闭数据库 250
17.4 有关打开和关闭数据库的提示 250
17.2 打开数据库 250
第十八章 使用Perl控制计算机 253
18.1 使用系统 253
18.1.1 获取程序的输出结果 254
18.1.2 使用open函数 254
18.1.3 在MacPerl上运行程序 255
18.3 使用只适合于UNIX的系统函数 256
18.3.1 用户数据库 256
18.2 使用Perl控件Windows和Mac计算机 256
18.3.2 组数据库 257
第十九章 面向对象的Perl 259
19.1 OOP的对象:快速并且一致性更高地编辑 259
19.2 定义对象、方法和变元 260
19.3 Perl的对象很容易创建 261
19.3.1 通过use函数打开Perl模块 261
19.3.2 用new子例程创建新对象 262
19.3.3 调用对象的方法 262
19.4 一个真实的对象实例 263
第五部分 有关Perl的十大特征 267
20.1 Perl创始人的风格 269
第二十章 编程格式的十条指导方针 269
20.2 选择操作符 270
20.3 括号的使用 271
20.4 条件的顺序可以非常灵活 271
20.5 有关注释的注释 272
20.6 标准行的处理 273
20.7 注释和代码放在一起 273
20.8 给变量指定描述性的名称 274
20.9 大写还是小写 274
20.10 使用空白行 275
21.2 去掉多个空白行 277
21.1 集合Unique行 277
第二十一章 十个非常有用的短Perl程序 277
21.3 按排列好的顺序打印文件中的文本 278
21.4 打印文件中某个范围内的文本 278
21.5 只列出某个目录中的文件 278
21.6 按大小列出目录 278
21.7 按扩展名对目录排序 279
21.8 创建一个简单的计算器 279
21.9 对列表随机化 280
21.10 生成可记忆的随机口令 280
22.2 页面格式 281
22.1 编译好的Perl 281
第二十二章 高级Perl议题 281
22.3 数据压缩 282
22.4 调试 282
22.5 系统进程 282
22.6 文件处理 283
22.7 Internet函数 283
22.8 高级程序员助手 284
22.9 套接字和通信的其他形式 285
22.10 两个函数的类别 286
23.2 Perl Mongers 287
23.1 Perl.com:Perl语言主页 287
第二十三章 十大Perl Web站点 287
23.3 The Perl Journal 288
23.4 PerlMonth 288
23.5 The Comprehensive Perl Archive Network 288
23.6 AVctiveState 288
23.7 MacPerl 288
23.8 The Perl Archive 289
23.9 libwww-perl 289
23.10 Yet Another Perl Conference 289
24.1 多维列表 291
24.2 更好的错误消息 291
第二十四章 Perl 5引入的十大高级功能 291
24.3 对象 292
24.4 程序模块 292
24.5 与C程序交互 292
24.6 POSIX库 292
24.7 改变大小写的函数 292
24.8 map函数 292
24.9 chomp函数 293
24.10 更多的程序员!更多的免费软件 293
25.1 Perl不需要预先声明变量 295
25.2 Perl使对象成为可有可无的 295
第二十五章 Perl比Java更好的十大原因 295
25.3 在Perl中处理字符串非常简单 296
25.4 Perl处理列表也很轻松 296
25.5 Perl可以完成更多的系统任务 296
25.6 Perl是免费的 296
25.7 可以编写许多有效的单行Perl程序 296
25.8 大多数样例Perl程序不仅仅能在浏览器中放置动画图片 297
25.9 Perl程序员不必沉默 297
25.10 Perl与激进的政府政治家无关 297
第六部分 附录 299
附录A Perl的参考资料 301
附录B 关于光盘 325