Perl参考大全
2002-2
人民邮电出版社
Martin C.Brown
709
1508
顾凯
无
本书是一本关于Perl语言的参考大全,涵盖了Perl语言的各个方面,包括Perl编程的基础知识、使用Perl进行编程、开发应用程序、Perl的高级技巧,附录提供了函数参考、Perl标准库和网上资源特定等内容。书中提供了许多实用的例程,并且给出了一些用Perl解决实际问题的建议。
本书并不是为任何特定的Perl用户组而写的,作为一本参考书,无论对于初学者,还是专业用户,这本书都是非常有价值的。
第1部分 Perl编程基础
第1章 Perl 的背景 1
1.1 版本和命名协定 1
1.1.1 Perl、perl还是PeRL 2
1.1.2 Perl 5.6之前的各种Perl版本 2
1.2 Perl的历史 2
1.3 Perl的主要特点 2
1.3.1 免费 3
1.3.2 简单易学、简明易读 3
1.3.3 快速高效 3
1.3.4 可扩展性 3
1.3.5 灵活的数据类型 4
1.3.6 面向对象 4
1.3.7 交流协作 4
1.4 编译器或解释器 4
1.5 与Perl类似的语言 4
1.5.1 UNIX Shell 5
1.5.2 Tcl 5
1.5.3 Python 5
1.5.4 Java 6
1.5.5 C/C++ 6
1.5.6 awk/gawk 6
1.6 关于Perl的误区 7
1.7 Perl的成功业绩 8
第2章 Perl概述 9
2.1 安装及使用Perl 9
2.1.1 编写一个Perl脚本 10
2.1.2 UNIX下的Perl 10
2.1.3 Windows下的Perl 12
2.1.4 Mac OS下的Perl 15
2.2 Perl中的组件 18
2.2.1 变量 18
2.2.2 操作符 19
2.2.3 语句 19
2.2.4 子程序(函数) 19
2.2.5 模块 20
2.3 接下去如何使用本书 20
第3章 Perl解析规则 21
3.1 脚本执行过程 21
3.2 语法和解析规则 21
3.2.1 基本语法 22
3.2.2 注释语句 23
3.2.3 组件确认 24
3.2.4 操作符和优先级 25
3.2.5 独立词 37
3.2.6 上下文 38
3.2.7 逻辑值 39
3.3 Perl的代码体系 39
第4章 变量和数据 41
4.1 基本命名规则 41
4.2 标量变量 42
4.3 字面量 42
4.3.1 数字字面量 42
4.3.2 字符串字面量 43
4.3.3 字符串引用 45
4.3.4 数组的内插 46
4.3.5 本地文档 46
4.3.6 V-字符串 47
4.4 数组 48
4.5 哈希结构 50
4.6 列表 53
4.7 类型标识(Typeglobs) 55
4.8 被定义的函数和未定义值 55
4.9 默认值 56
4.10 其他标记 56
4.11 特殊变量 56
第5章 语句和控制结构 65
5.1 代码块 65
5.2 条件语句 65
5.3 循环语句 68
5.3.1 while循环 68
5.3.2 until循环 68
5.3.3 for循环 69
5.3.4 foreach循环 69
5.3.5 continue块 70
5.3.6 标签 70
5.3.7 循环控制 71
5.3.8 非限定块 72
5.3.9 goto语句 73
第6章 子程序、包和模块 74
6.1 函数 74
6.1.1 参数 76
6.1.2 返回值 82
6.1.3 错误通告 83
6.1.4 上下文 83
6.1.5 属性 84
6.1.6 原型 85
6.2 包 86
6.2.1 包符号表 88
6.3 特殊块 88
6.4 模块 89
6.4.1 建立模块 90
6.4.2 Exporter模块 91
6.4.3 use和require的比较 91
6.4.4 no语句 93
6.4.5 do语句 93
6.5 作用域 93
6.5.1 “my”的效果 94
6.5.2 “local”的效果 95
6.5.3 “our”的效果 95
6.5.4 循环中的作用域 96
6.6 自动装载 96
第7章 文件操作 98
7.1 文件句柄 98
7.1.1 打开和关闭文件 99
7.1.2 输入/输出句柄 104
7.1.3 文件定位 109
7.1.4 混合控制函数 110
7.2 文件管理 112
7.2.1 文件信息 112
7.2.2 基本的文件管理 116
7.2.3 目录访问 118
7.2.4 管理目录 120
7.2.5 使用fcntl函数进行文件的控制 122
7.2.6 通过ioctl函数进行I/O控制 122
7.2.7 select 函数 123
7.2.8 文件加锁 125
第8章 数据操作 127
8.1 数字处理 127
8.1.1 abs—绝对值 127
8.1.2 int—将浮点数转换为整数 127
8.1.3 exp—e为底的乘方 128
8.1.4 sqrt—开方运算 128
8.1.5 log—对数函数 128
8.1.6 三角函数 128
8.1.7 进制转换 129
8.1.8 字符和数字之间的转换 129
8.1.9 随机数 130
8.1.10 小整数的操作 131
8.2 字符串操作 131
8.2.1 字符串连接 131
8.2.2 字符串长度 132
8.2.3 改变字符大小写 132
8.2.4 行结束字符的消除 132
8.2.5 字符串定位 133
8.2.6 提取子串 133
8.2.7 栈 134
8.2.8 数组切片 135
8.2.9 join函数 136
8.2.10 split函数 137
8.2.11 grep函数 138
8.2.12 map函数 138
8.2.13 sort函数 139
8.2.14 reverse 140
8.3 正则表达式 140
8.3.1 模式修饰符 141
8.3.2 匹配操作符 142
8.3.3 替换操作符 143
8.3.4 转换 145
8.3.5 正则表达式的元素 147
8.3.6 正则表达式变量 156
8.3.7 正则表达式扩展名/断言 157
8.3.8 预编译表达式 158
8.3.9 正则表达式的支持函数 159
8.4 Unicode 160
8.4.1 Perl对于Unicode的解释 161
8.4.2 Perl中的Unicode字符 161
8.4.3 Unicode作用于Perl的效果 162
第9章 错误和捕获错误 163
9.1 在脚本中加入错误确认的代码 163
9.1.1 错误确认方法 163
9.1.2 错误确认方针 164
9.2 什么是要确认的错误 165
9.3 什么是不需要确认的错误 165
9.4 什么时候停止确认 166
9.4.1 尽量避免画蛇添足 166
9.4.2 函数、返回值和内嵌结构 167
9.5 表示错误的信息和数字 168
9.6 在脚本中报告错误 169
9.6.1 Warn函数 169
9.6.2 Die函数 169
9.6.3 指示和标记 170
9.7 在模块中进行报错 170
9.7.1 Carp函数 171
9.7.2 Cluck函数 171
9.7.3 Croak函数 171
9.7.4 Confess函数 172
第2部分 使用Perl编程
第10章 复杂数据结构 173
10.1 访问打包的数据结构 173
10.2 引用 176
10.2.1 建立硬引用 177
10.2.2 反引用 179
10.2.3 判断引用中的数据类型 181
10.2.4 软引用 182
10.3 复杂结构 182
10.3.1 二维数组 183
10.3.2 二维哈希结构 186
10.3.3 哈希结构的数组 189
10.3.4 数组的哈希结构 191
10.3.5 多于二维的结构 193
10.4 对象 195
10.4.1 关于对象的基础知识 195
10.4.2 建立和使用对象 196
10.4.3 对象方法 197
10.4.4 类和类的继承 200
10.4.5 析构函数和垃圾收集 200
10.4.6 Perl中对象结构同其他语言的比较 201
10.5 使用捆绑 201
10.5.1 建立新的捆绑类 202
第11章 系统信息 206
11.1 用户和用户组 206
11.1.1 获取UNIX的Password 206
11.1.2 获得UNIX的用户组 208
11.1.3 Password加密 208
11.2 Time 209
11.2.1 gmtime和localtime 209
11.2.2 Time函数 210
11.2.3 时间值比较 210
11.2.4 将日期和时间转换为起始时间值 210
11.2.5 时间算法 211
11.2.6 times函数 213
11.2.7 sleep 函数 214
11.2.8 Alarms 214
11.3 环境变量 215
第12章 网络 218
12.1 获得网络信息 219
12.1.1 主机 219
12.1.2 协议 220
12.1.3 服务 221
12.1.4 网络 221
12.2 套接字模块 222
12.2.1 地址解析和转换 222
12.2.2 地址常量 222
12.2.3 套接字结构 223
12.2.4 行结束常量 223
12.3 利用套接字进行通信 223
12.3.1 连接远端套接字 223
12.3.2 监听套接字连接信息 226
12.4 使用IO::Socket 231
12.4.1 客户端 232
12.4.2 服务器端 232
12.4.3 使用IO::Socket和IO::Select 232
12.4.4 获取套接字地址 234
12.4.5 关闭套接字 234
12.4.6 套接字选项 235
12.4.7 数据传递 235
12.5 Graham Barr的libnet包族 236
12.6 Gisle Aas的LWP包族 238
第13章 数据库系统 240
13.1 文本数据库 241
13.1.1 限定数据库 242
13.1.2 固定长度的记录 242
13.2 DBM数据库 245
13.2.1 DBM的实现 246
13.2.2 DBM函数 247
13.2.3 使用捆绑DBM数据库 248
13.2.4 在DBM各种格式之间转换 250
13.2.5 使用AnyDBM_File 251
13.2.6 GDBM的特性 251
13.2.7 Berkeley DB 特性 252
13.2.8 在DBM数据库中存放复杂的数据 256
13.2.9 DBM中的关系型数据库 259
13.3 数据库的文件锁定 260
13.4 使用DBI和Win32::ODBC 工具集 261
13.4.1 DBI 262
13.4.2 Win32::ODBC 262
13.4.3 数据库机制和兼容 263
13.4.4 数据库连接 263
13.4.5 执行简单查询 264
13.4.6 执行扩展查询 265
13.4.7 关闭数据库连接 266
13.4.8 确认错误 266
13.5 复习SQL语言 267
13.5.1 SQL语句 268
第14章 进程间通信 274
14.1 进程 274
14.1.1 控制Perl运行 274
14.1.2 进程信息 275
14.1.3 进程组 275
14.1.4 进程优先级 275
14.2 信号 276
14.2.1 信号句柄 277
14.2.2 _WARN_和_DIE_信号 279
14.2.3 发送信号 281
14.3 管道 281
14.3.1 匿名管道 281
14.3.2 双向通信 282
14.3.3 命名管道 282
14.3.4 Windows下的命名管道 284
14.3.5 安全管道 286
14.4 执行附加进程 287
14.4.1 运行其他程序 287
14.4.2 替换当前脚本 288
14.4.3 建立子进程 288
14.5 其他的函数调用 293
14.6 system V IPC 294
第15章 其他运行方法 295
15.1 以命令行形式执行Perl 295
15.1.1 特殊操作 300
15.2 Perl的环境变量 301
15.3 Perl in Perl(eval) 302
15.3.1 使用eval EXPR 302
15.3.2 使用eval BLOCK 303
15.3.3 捕捉意外情况 303
15.3.4 返回信息 303
15.3.5 eval和_DIE_信号句柄 303
15.4 线程 304
15.4.1 多任务如何实现 304
15.4.2 从多任务到多线程 305
15.4.3 线程和多进程的比较 306
15.4.4 线程和select()函数的区别 306
15.4.5 线程和Perl 306
15.4.6 创建一个新线程 306
15.4.7 通过匿名者函数建立线程 307
15.4.8 线程控制 307
15.4.9 变量控制 308
15.4.10 队列 309
15.4.11 标志(semaphore) 309
15.4.12 信号 309
15.5 安全性 310
15.5.1 使用 Taint 模式 310
15.5.2 safe模块和opcode模块 312
第3部分 开发应用
第16章 用户界面工具 315
16.1 处理命令行参数 315
16.1.1 Getopt::std 316
16.1.2 Getopt::Long 317
16.2 Perl输出显示机制 319
16.2.1 标题和脚注 322
16.2.2 格式函数 322
16.2.3 格式变量 323
第17章 高级用户界面 324
17.1 终端中的一些处理 324
17.2 使用TK 325
17.2.1 在UNIX下安装TK 326
17.2.2 在Windows下安装TK 326
17.2.3 接触TK 326
17.2.4 事件循环 328
17.2.5 部件 330
17.2.6 控制窗口位置大小 344
17.2.7 简化处理 347
第18章 Web中的Perl 353
18.1 HTML 353
18.2 统一资源定位符URL 354
18.3 Web操作浏览 354
18.4 环境 355
18.5 通用网关接口(CGI) 358
18.5.1 数据提取 359
18.5.2 返回相关的数据到用户浏览器中 361
18.5.3 文档主体 364
18.6 Web编程 364
18.7 CGI模块 365
18.7.1 cookies 368
18.8 解析HTML 369
18.9 解析XML 370
18.10 调试程序 373
18.11 安全性 374
第19章 通过标记控制Perl的执行 377
19.1 告警 377
19.2 $^W变量 378
19.3 以前Perl版本中的warnings标记 378
19.4 Perl5.6中的词法告警 379
19.5 strict 标记 382
19.5.1 vars选项 383
19.5.2 refs选项 384
19.5.3 subs选项 385
19.6 其他Perl标记 385
19.6.1 attributes标记 386
19.6.2 autouse标记 386
19.6.3 base标记 387
19.6.4 blib标记 387
19.6.5 bytes标记 387
19.6.6 charnames标记 388
19.6.7 constant标记 388
19.6.8 diagnostics标记 389
19.6.9 field标记 390
19.6.10 integer 391
19.6.11 less 391
19.6.12 lib 391
19.6.13 locale 392
19.6.14 open 392
19.6.15 ops 392
19.6.16 overload 392
19.6.17 re 393
19.6.18 sigtrap 393
19.6.19 subs 394
19.6.20 vars 394
第20章 扩展和嵌入Perl 395
20.1 Perl的内核 395
20.1.1 Perl体系结构 396
20.1.2 内部对象 396
20.1.3 翻译器 397
20.1.4 操作码 397
20.1.5 编译 400
20.1.6 执行 401
20.2 Perl的内部结构 402
20.2.1 变量 402
20.2.2 栈 406
20.2.3 栈的大小 411
20.2.4 Perl内核的归纳 411
20.3 Perl的扩展编程 411
20.3.1 Perl的扩展接口 411
20.3.2 XS简介 412
20.3.3 SWIG简介 412
20.3.4 使用XS 413
20.4 在其他语言中使用Perl 434
20.4.1 内嵌Perl解释器 435
20.4.2 使用特定的函数 436
20.4.3 多个实例 438
20.4.4 XS初始化过程 439
20.5 同其他语言配合使用 439
20.5.1 将其他语言转换成Perl 439
20.5.2 将Perl转换成其他语言 443
20.5.3 在Perl中调用其他语言 443
第21章 调试程序和优化代码 445
21.1 调试技术 446
21.1.1 使用Print语句 446
21.1.2 使用caller 448
21.1.3 使用eval函数 450
21.1.4 编写日志 452
21.1.5 向syslog报告调试信息 453
21.1.6 向Windows NT/2000事件日志报告调试信息 454
21.2 使用调试器 454
21.2.1 watches监控 454
21.2.2 步进 454
21.2.3 断点 455
21.2.4 Perl 调试器 455
21.2.5 ActivePerl调试器 465
21.3 Perl和其他语言的差别 466
21.3.1 Perl和awk/gawk的差别 466
21.3.2 Perl和C之间容易混淆的地方 467
21.3.3 Perl和sed之间容易混淆的地方 469
21.3.4 Perl和emacs之间容易混淆的地方 469
21.3.5 Shell和Perl之间容易混淆的地方 469
21.3.6 Perl和python之间容易混淆的地方 469
21.4 代码优化 471
21.4.1 Perl Profiler 471
21.4.2 手工Profiling 475
21.4.3 优化代码时要注意的地方 476
第22章 Perl编译器 481
22.1 使用转储功能 482
22.2 使用Perl编译器 483
22.2.1 后端 483
22.2.2 perlcc前端 492
22.2.3 解释代码和编译代码之间的区别 494
22.3 速度比较 495
22.3.1 测试 495
22.3.2 概括结果 498
第23章 Perl的文档 500
23.1 使用Perl提供的文档 500
23.1.1 UNIX 503
23.1.2 Windows 503
23.1.3 Mac OS/Mac OS X 503
23.2 编写POD文档 506
23.2.1 POD组件 506
23.2.2 命令段落 506
23.2.3 一般文本段落 507
23.2.4 Verbatim段落 508
23.2.5 转义序列 508
23.2.6 嵌入文档 508
23.3 将POD转换成其他格式 509
23.3.1 文本(TEXT) 510
23.3.2 HTML 510
23.3.3 man page 510
23.3.4 PostScript / PDF 511
23.3.5 通过自己编写的脚本将POD转换成HTML 512
第24章 Perl中跨平台使用的问题 513
24.1 函数支持 513
24.2 常量的跨平台兼容 514
24.3 执行环境 514
24.4 错误报告 514
24.5 行结束符 514
24.6 字符集 515
24.7 数据差别 515
24.8 文件和文件路径 515
24.9 模块 516
24.10 性能和资源 516
24.11 跨系统使用Perl的一些技巧 516
24.11.1 判断当前的操作系统 516
24.11.2 判断Perl版本 517
24.11.3 检验所支持的函数 518
24.11.4 函数重载 518
第25章 发布模块和应用程序 520
25.1 Perl Makefile和Extutils::MakeMaker 520
25.1.1 Perl Makefiles和CPAN 521
25.1.2 Perl Makefiles和PPM 521
25.1.3 扩展程序建立和安装概述 521
25.1.4 MakeMaker概述 523
25.1.5 h2xs工具 524
25.1.6 MakeMaker配置选项 524
25.1.7 创建一个伪程序描述文件 528
25.1.8 默认的程序描述文件目标 529
25.1.9 创建一个新的Perl二进制可执行文件 529
25.1.10 Package Builder的目标 530
25.2 MakeMaker的一些技巧 532
25.2.1 确定先决条件 532
25.3 向CPAN提供打包的模块 535
25.4 向PPM/VPM提供打包的模块 535
附录A 参考函数 537
附录B 标准Perl库 618
附录C 资源 704
无