目 录

第一部分 使用Perl
第1章 探索Perl 2
1.1 在线文档 3
    1.1.1 perldoc 3
    1.1.2 函数定义 4
    1.1.3 模块文档 4
    1.1.4 如何打印出美观文档 6
1.2 CPAN(模块档案) 6
1.3 安装模块 9
    1.3.1 人工安装(UNIX、Linux和Microsoft Windows) 9
    1.3.2 处理权限问题 11
    1.3.3 使用CPAN安装器(UNIX和Linux) 14
    1.3.4 使用CPAN 18
    1.3.5 使用Perl包管理器(Microsoft Windows) 20
    1.3.6 详细安装向导 21
    1.3.7 UNIX安装(所有系统) 22
1.4 使用Perl调试器 25
    1.4.1 命令行调试器 26
    1.4.2 使用ptkdb调试器 28
1.5 小结 29
1.6 练习 29
1.7 资源 30
    1.7.1 在线文档 30
    1.7.2 模块库 30
    1.7.3 软件 30

第2章 Perl基础知识 32
2.1 编写第一个Perl程序 32
2.2 变量声明和简单表达式 33
    2.2.1 变量 33
    2.2.2 简单算法和字符串运算符 35
    2.2.3 引用规则 36
    2.2.4 数字常量 37
2.3 读取输入 37
2.4 if语句和关系运算符 38
2.4.1 elsif语句 39
    2.4.2 条件运算符 39
    2.4.3 比较运行符 40
    2.4.4 defined函数 41
2.5 “真”的定义 42
    2.5.1 简单除法程序 43
2.6 循环语句 44
    2.6.1 for语句 44
2.7 简单I/O 45
    2.7.1 读取文件 45
    2.7.2 写入一个文件 46
    2.7.3 复制一个文件 47
2.8 小结 47
2.9 练习 47
2.10 资源 48
    2.10.1 在线文档 48

第3章 数组 49
3.1 基本数组 49
    3.1.1 决定数组中的元素个数 50
    3.1.2 数组示例 51
    3.1.3 数组表达式 51
    3.1.4 打印数组 52
    3.1.5 带有“黑洞”的数组 52
    3.1.6 引用词运算符(qw) 52
3.2 操纵数组结尾 53
    3.2.1 处理数组的一部分 54
3.3 splice函数 56
    3.3.1 splice函数的返回值 56
    3.2.2 附加splice参数 57
3.4 split和join函数 58
    3.4.1 结算支票簿 59
    3.4.2 公共split表达式 60
    3.4.3 join函数 62
3.5 数组排序 62
3.6 多维数组 62
3.7 @ARGV变量 63
3.8 English模块 63
3.9 小结 63
3.10 练习 63
3.11 资源 65
    3.11.1 在线文档 65
    3.11.2 模块 65

第4章 正则表达式 66
4.1 基本正则表达式 66
    4.1.1 修饰符 68
    4.1.2 字符集 69
    4.1.3 空白符(\s) 70
    4.1.4 使用分组来分解行 71
    4.1.5 处理可选(|)和限制匹配 72
    4.1.6 条件 74
    4.1.7 使用正则表达式调试包 77
    4.1.8 正则表达式元素小结 88
    4.1.9 构建正则表达式 88
4.2 替换 89
4.3 grep函数 90
4.4 小结 90
4.5 练习 91
4.6 资源 94
    4.6.1 正则表达式元素 94
    4.6.2 调试符号 95
    4.6.3 在线文档 95


第5章 Perl的新语法 96
5.1 新且有用的语法 96
    5.1.1 foreach语句 96
    5.1.2 变量$_ 97
    5.1.3 “Here-Doc”语法 98
    5.1.4 die函数 100
    5.1.5 特殊文件<> 100
    5.1.6 文件测试运算符 101
    5.1.7 redo运算符 101
    5.1.8 翻译运算符(tr) 102
    5.1.9 =左边的数组 103
5.2 Perl的不常用语句 103
    5.2.1 unless语句 103
    5.1.2 可游荡的if和unless语句 104
    5.2.3 __DATA__文件 104
5.3 小结 104
5.4 练习 105
5.5 资源 105
    5.5.1 在线文档 105


第6章 散列、引用和复杂数据结构 106
6.1 散列 106
    6.1.1 打印整个散列 108
    6.1.2 散列的简单读和写 108
    6.1.3 更复杂的散列读和写 110
    6.1.4 检查单词是否位于列表中 110
    6.1.5 使用map函数 111
    6.1.6 从散列中删除元素 113
    6.1.7 数组和散列 113
6.2 引用 114
    6.2.1 匿名引用 115
6.3 将C数据结构翻译成Perl数据结构 115
    6.3.1 散列作为结构 116
    6.3.2 散列的数组 116
    6.3.3 读入日期数组 117
    6.3.4 数组的数组 119
    6.3.5 打印复杂数据结构 120
    6.3.6 复制数据结构 120
6.4 小结 120
6.5 练习 121
6.6 资源 121
    6.6.1 在线文档 121
    6.6.2 模块 121


第7章 子程序和模块 123
7.1 模块 123
    7.1.1 参数定义更多说明 124
    7.1.2 数组和散列参数 124
    7.1.3 变量长度参数列表 125
    7.1.4 参数定义小结 126
    7.1.5 其它参数传递方法 126
    7.1.6 无参数定义的函数 127
    7.1.7 local声明 127
7.2 包 128
    7.2.1 创建包文件 129
    7.2.2 提供外部接口 129
    7.2.3 use的更多说明 133
    7.2.4 组织模块 134
    7.2.5 特殊块(BEGIN, END) 134
    7.2.6 use与require 135
7.3 小结 136
7.4 练习 136
7.5 资源 136
    7.5.1 在线文档 136
    7.5.2 模块 136


第8章 面向对象编程 138
8.1 将散列用作对象 138
    8.1.1 设计注释 141
8.2 基本Perl对象 141
    8.2.1 多态 143
    8.2.2 信息隐藏 144
8.3 运行符重载 144
8.4 小结 150
8.5 练习 150
8.6 资源 151
    8.6.1 在线文档 151
    8.6.2 模块 151


第9章 高级I/O 152
9.1 打开文件(温习) 152
    9.1.1 打开管道 152
    9.1.2 Open小结 153
    9.1.3 使用`运算符 153
9.2 sysopen(高级打开) 154
9.3 读二进制文件 154
9.4 文件处理包 157
9.5 给子程序传递文件句柄 157
9.6 对文件句柄的引用 158
9.7 小结 159
9.8 练习 159
9.9 资源 159
    9.9.1 在线文档 159
    9.9.2 模块 159
    9.9.3 函数 159


第10章 POD 161
10.1 POD(无格式旧式文档) 161
    10.1.1 为程序编写文档 161
    10.1.2 NAME部分 162
    10.1.3 SYNOPSIS部分 162
    10.1.4 DESCRIPTION部分 162
    10.1.5 OPTIONS部分 163
    10.1.6 SEE ALSO部分 164
    10.1.7 检查结果 164
    10.1.8 将所有部分放在一起 164
10.2 将POD转换成其它可读性格式 166
10.3 在文件中放置--help选项 167
10.4 POD模板 168
10.5 小结 171
10.6 练习 171
10.7 资源 171
    10.7.1 在线文档 171
    10.7.2 命令 171


第11章 Perl的后台工作 173
11.1 使用Perl时到底发生了什么 173
    11.1.1 use strict的工作方式 173
    11.1.2 use vars语句 174
11.2 Exporter包 175
11.3 import和AUTOLOAD的工作方式 175
11.4 小结 176
11.5 资源 176
    11.5.1 在线文档 176
    11.5.2 模块 176


第12章 CGI编程 177
12.1 简单CGI 177
12.2 CGI版本的“Hello World” 177
    12.2.1 运行程序 178
12.3 基本表单 180
    12.3.1 FORM语句 181
    12.3.2 文本空白 182
    12.3.3 选项列表 182
    12.3.4 复选框 182
    12.3.5 单选按钮 183
    12.3.6 文本区域 183
    12.3.7 隐藏输入 183
    12.3.8 提交按钮 184
    12.3.9 组合在一起 184
12.4 创建CGI程序 185
    12.4.1 记录数据 187
    12.4.2 编写反应 188
    12.4.3 将各个部分放在一起 188
12.5 调试CGI脚本 190
    12.5.1 解决“Internal Server Error” 191
    12.5.2 交互式调试 191
    12.5.3 服务器启动的调试器 193
12.6 安全 194
    12.6.1 Taint模式 195
    12.6.2 Perl程序是如何崩溃的 196
12.7 Cookie 197
12.8 小结 198
12.9 练习 198
12.10 资源 198
    12.10.1 在线文档 198
    12.10.2 模块 198
    12.10.3 网站 199


第13章 用Tk创建GUI 200
13.1 Tk基础知识 200
13.2 Tk窗口小部件 201
    13.2.1 窗口小部件文档 202
    13.2.2 使用窗口小部件 202
    13.2.3 主事件循环 203
13.3 几何管理器 204
    13.3.1 pack 204
    13.3.2 grid 206
    13.3.3 place 206
    13.3.4 form 206
13.4 特殊窗口小部件 207
    13.4.1 滚动条(Scollbar) 207
    13.4.2 文本(Text) 208
13.5 事件(event) 208
13.6 一般设计提示 209
    13.6.1 窗口小部件布局 209
    13.6.2 先放置再扩展 209
    13.6.3 使用ptkdb 209
13.7 综合起来 210
    13.7.1 搜索 211
13.8 小结 218
13.9 练习 218
13.10 资源 219
    13.10.1 在线文档 219
    13.10.2 演示 219
    13.10.3 网站 219


第14章 用Inline::C结合C与Perl 220
14.1 什么是Inline模块 220
14.2 Hello World 220
14.3 简单参数和返回值 222
    14.3.1 应付错误 223
14.4 Perl如何处理变量 224
    14.4.1 访问Perl的SV变量 225
    14.4.2 使用SV 226
14.5 返回多个值 228
14.6 从C调用Perl 231
14.7 配置Inline 232
14.8 生成可发布模块 233
14.9 小结 233
14.10 练习 233
14.11 资源 234
    14.11.1 在线文档 234
    14.11.2 模块 234
    14.11.3 应用程序 234


第15章 综合运用 235
15.1 Perl和数据库 235
    15.1.1 MLDBM包 235
    15.1.2 处理同时数据库访问 237
15.2 数据库设计 237
15.3 数据库实现 238
    15.3.1 保存和读取记录 238
15.4 disk.pm模块 239
15.4.1 命令行应用 249
15.5 GUI接口 256
    15.5.1 添加弹出窗口 257
    15.5.2 查找与再查找 258
15.6 CGI版本 271
    15.6.1 错误与消息 274
    15.6.2 调试 275
    15.6.3 Cookie 275
    15.6.4 调试Cookie 276
    15.6.4 CGI程序 277
15.7 小结 286
15.9 练习 286
15.9 资源 287
    15.9.1 在线文档 287
    15.9.2 模块 287
    15.9.3 网页 287


第16章 实战 288
16.1 列表的区别 288
16.2 拨号1-800-Confuse-Me 292
16.3 时间调整 294
16.4 日历程序 298
    16.4.1 日期格式 299
    16.4.2 程序 299
16.5 复制文件检查器 304
16.6 表格格式化 309
16.7 日志文件浏览器 314
16.8 网站检查器 328
    16.8.1 解析文件 328
    16.8.2 孤立文件探测 330
    16.8.3 外部链接检查 331
    16.8.4 网站检查器小结 331
16.9 对象文件交叉引用系统 336
    16.9.1 ox-gen.pl 337
    16.9.2 用ox.pl提取信息 343
    16.9.3 附加工作 345
16.10 计算web页点击次数 345
    16.10.1 web.pm模块 345
    16.10.2 计算点击数 352
    16.10.3 图示结果 354
    16.10.4 动态web页图表 360
    16.10.5 对web页计数的注释 361
16.11 小结 361
16.12 练习 361
16.13 资源 362
    16.13.1 模块 362
    16.13.2 程序 362


第17章 创建模块 363
17.1 模块创建过程 363
    17.1.1 填充文件 365
    17.1.2 构建模块 368
    17.1.3 使用自动装载器 370
17.2 模块创建详细步骤 370
17.3 调试模块 374
    17.3.1 运行调试器 375
17.4 小结 379
17.5 练习 379
17.6 资源 380
    17.6.1 在线文档 380
    17.6.2 程序 380
    17.6.3 模块 380


第二部分 附录
 

附录A 安装Perl 382
A.1 在Linux上安装Perl 382
A.2 从源代码在UNIX或Linux上安装Perl 382
    A.2.1 安装目录 382
    A.2.2 一步步安装 383
    A.2.3 UNIX/Linux安装快速参考 387
A.3 在Microsoft Windows上安装Perl 388


附录B 将Perl脚本转换成命令 389
B.1 UNIX/Linux变幻字符串 389
B.2 使用env程序 390
B.3 Shell脚本方法 390
    B.3.1 直接运行脚本 391
B.4 Microsoft Windows .bat文件 391
B.5 资源 393
    B.5.1 命令 393
    B.5.2 在线文档 393


附录C Perl题外话 394
C.1 数据库 394
C.2 C/C++程序员工具 394
    C.2.1 Linux交叉引用 395
    C.2.2 用Mozilla跟踪漏洞 396
    C.2.3 web搜索引擎 396
    C.2.4 文本搜索GUI 397
    C.2.5 相片簿 398
    C.2.6 电子商务 399
C.3 资源 399
    C.3.1 程序 399


索引 401