目录 1
第1章 实用摘要和报表语言 1
1.1 什么是Perl 1
1.2 Perl用户 1
2.3.2 注释 1 1
1.3 Perl的版本 2
1.4 如何获得Perl 2
1.5 什么是CPAN 5
1.6 Perl文档 5
2.1.1 -e开关 7
2.1 从命令行使用Perl 7
第2章 Perl脚本 7
2.1.2 -n开关 8
2.1.3 -c开关 9
2.2 脚本设置 10
2.3 脚本 10
2.3.1 开始 10
2.3.3 Perl语句 12
2.3.4 执行脚本 12
2.3.5 脚本范例(UNIX,Windows) 12
练习1 了解Perl的语法 14
3.2.1 引号 15
3.2 字 15
3.2.2 实量(常量) 15
第3章 获得打印句柄 15
3.1 文件句柄 15
3.3 print函数 17
3.3.1 打印实量 18
3.3.2 警告编译指示和-w开关 21
3.3.3 strict编译指示和字 22
3.4 printf函数 23
3.4.1 sprintf函数 26
3.4.2 无引号打印:here document 26
练习2 编写literals脚本 29
4.1.1 类型 30
4.1.2 作用域和包 30
4.1 关于Perl变量 30
第4章 变量 30
4.1.3 命名规范 31
4.1.4 赋值语句 31
4.1.5 引号规则 32
4.2 标量、数组和散列 36
4.2.1 标量变量 36
4.2.2 数组 39
4.2.3 散列 45
4.3 从STDIN读取 50
4.3.1 把输入赋值给标量变量 50
4.3.2 chop和chomp函数 51
4.3.3 read函数 52
4.3.4 getc函数 53
4.3.5 将输入赋值给数组 54
4.4.1 chop和chomp函数(用于列表) 55
4.3.6 将输入赋值给散列 55
4.4 数组函数 55
4.4.2 exists函数 56
4.4.3 delete函数 57
4.4.4 grep函数 57
4.4.5 join函数 57
4.4.6 map函数 58
4.4.7 pack和unpack函数 60
4.4.8 pop函数 61
4.4.9 push函数 62
4.4.10 shift函数 62
4.4.11 splice函数 63
4.4.12 split函数 64
4.4.13 sort函数 68
4.4.14 reverse函数 69
4.4.15 unshift函数 70
4.5 散列(关联数组)函数 70
4.5.1 keys函数 70
4.5.2 values函数 71
4.5.3 each函数 72
4.5.4 delete函数 73
4.5.5 exists函数 73
4.6 关于散列的更多内容 74
4.6.1 从文件加载散列 74
4.6.2 特殊散列 75
练习3 特殊字符 77
4.6.3 语境 77
第5章 运算符 80
5.1 关于Perl运算符 80
5.2 混合数据类型 80
5.3 优先权与结合性 81
5.3.1 赋值运算符 83
5.3.2 关系运算符 84
5.3.3 等值运算符 86
5.3.4 逻辑运算符(短路运算符) 89
5.3.5 逻辑字运算符 91
5.3.6 算术运算符 92
5.3.7 自动递增和自动递减运算符 93
5.3.8 位逻辑运算符 95
5.3.9 条件运算符 97
5.3.10 范围运算符 99
5.3.11 特殊字符串运算符和函数 99
5.3.12 生成随机数 102
5.3.13 rand/srand函数 102
练习4 运算符 104
第6章 条件 106
6.1 控制结构,块和复合语句 106
6.2 决策——条件结构 106
6.2.1 if和unless语句 106
6.2.2 unless语句结构 109
6.3.1 while循环 111
6.3 循环 111
6.3.2 until循环 113
6.3.3 for循环 115
6.3.4 foreach循环 117
6.3.5 循环控制 120
6.3.6 伪开关语句 128
练习5 条件是什么 129
第7章 正则表达式——模式匹配 130
7.1 什么是正则表达式 130
7.2 表达式修饰符和简单语句 130
7.2.1 条件修饰符 131
7.2.2 DATA文件句柄 132
7.2.3 循环修饰符 135
7.3 正则表达式运算符 136
7.3.1 m运算符和匹配 136
7.3.2 s运算符和替换 142
7.3.3 模式绑定运算符 150
练习6 它是sed、awk或grep吗?尝试Perl 156
第8章 获得控制:正则表达式元字符 157
8.1 正则表达式元字符 157
8.1.1 用于单字符的元字符 159
8.1.2 白空元字符 167
8.1.3 重复模式匹配的元字符 169
8.1.4 tr或y函数 192
8.2 统一字符编码(Unicode) 196
练习7 是sed、awk或grep吗?给出Perl的另外一个作用 198
9.1 用户定义文件句柄 199
9.1.1 打开文件:open函数 199
9.1.2 打开文件读 199
第9章 获得文件句柄 199
9.1.3 打开文件写 204
9.1.4 Win32文件 205
9.1.5 打开文件添加 206
9.1.6 select函数 207
9.1.7 使用flock锁住文件 207
9.1.8 seek和tell函数 208
9.1.9 打开文件读写 213
9.1.10 管道打开 214
9.2.1 ARGV数组 220
9.2 传送参数 220
9.2.2 ARGV和Null文件句柄 222
9.2.3 eof函数 225
9.2.4 -i开关:原位编辑文件 227
9.3 文件测试 229
练习8 获得文件句柄 231
第10章 子程序和函数 232
10.1 子程序/函数 232
10.1.1 定义和调用子程序 233
10.1.2 传送参数 235
10.1.3 原型 243
10.1.4 返回值 244
10.1.5 通过引用调用——别名和Typeglobs 246
10.1.6 通过指针传送 250
10.1.7 自动加载 256
10.1.8 BEGIN和END子程序(开始和结束) 258
10.1.9 subs函数 258
练习9 子程序不可缺少 259
第11章 模块化、打包并发送到库 261
11.1 包和模块 261
11.1.1 类比 261
11.1.2 定义 261
11.1.3 符号表 262
11.2 标准Perl库 267
11.2.1 @INC数组 268
11.2.2 包和.pl文件 271
11.2.3 模块和.pm文件 274
11.2.4 来自CPAN的模块 281
练习10 将所有的Perl都放入包中 286
练习11 压缩并放入库中 286
第12章 这个工作要求引用吗 287
12.1 什么是引用 287
12.1.1 符号引用与硬引用 287
12.1.2 硬引用 289
12.1.3 引用和匿名变量 290
12.1.4 嵌套数据结构 292
12.1.5 引用和子程序 298
12.1.6 文件句柄引用 301
12.1.7 ref函数 302
练习12 指向地址 303
第13章 面向对象的Perl 305
13.1 OOP范型 305
13.1.1 回顾包和模块 305
13.1.2 一些面向对象的专用术语 306
13.2 类、对象和方法 306
13.2.1 类和专用性 306
13.2.2 对象 307
13.2.3 bless函数 309
13.2.4 方法 310
13.2.5 多态性和动态绑定 321
13.2.6 析构函数和无用存储单元收集 326
13.3 继承 327
13.3.1 @ISA数组和调用方法 328
13.3.2 $AUTOLOAD,sub AUTOLOAD和UNIVERSAL 329
13.3.3 派生类 332
13.3.4 多重继承 338
13.3.5 面向对象术语——父方法 338
13.4 公共用户接口:文档编制类 340
13.4.1 pod文件 340
13.4.2 pod命令 342
13.4.3 如何使用pod解释程序 343
13.4.4 将pod文档翻译成文本 343
13.5.1 再看标准Perl库 345
13.5 使用Perl库中的对象 345
13.4.5 将pod文档翻译成HTML 345
13.5.2 标准Perl库中面向对象的模块 346
13.5.3 使用标准Perl库中的模块 348
练习13 这一课的对象是什么 350
练习14 函数Pod中的Perl 350
第14章 tie函数,DBM文件和数据库挂钩 351
14.1 连接变量与类 351
14.1.1 tie函数 351
14.1.2 预定义方法 351
14.1.3 连接标量 352
14.1.4 连接数组 356
14.1.5 连接散列 358
14.2 DBM文件 363
14.2.1 创建并赋给DBM文件数据 364
14.2.2 从DBM文件检索数据 366
14.2.3 从DBM文件中删除项 367
第15章 Perl数据库编程 370
15.1 本章概述 370
15.2 Perl数据库编程 371
15.3 使用RDBMS的Perl编程 371
15.3.1 在Windows系统上安装Perl 371
15.3.2 使用PPM在Windows系统上安装Perl模块 372
15.3.3 安装RDBMS 374
15.3.4 为MMS范例创建DSN 375
15.4.1 Microsoft SQL Server——范例15-1和15-3的查询 377
15.4 使用ADO和DBI访问MSS 377
15.4.2 范例15-1:exl.pl在MS SQL Server上的ADO简单查询,DSN 378
15.4.3 执行DDL和DML操作 380
15.4.4 范例15-2:ex2.pl MSS上persons.sql的Perl ADO,无DSN 381
15.4.5 范例15-3:ex3.pl MS SQL Server上的Perl DBI范例 383
15.4.6 范例15-4:ex4.pl MSS上persons.sql的Perl DBI 385
15.5 使用ADO和DBI访问Oracle 387
15.5.1 Oracle——范例15-5(ADO)和15-7(DBI)的简单查询 387
15.5.2 为Oracle范例创建DSN 388
15.5.3 范例15-5:ex5.pl Oracle上的ADO简单查询,DSN 390
15.5.4 在Oracle上执行DDL和DML操作 392
15.5.5 范例15-6:ex6.pl Oracle上persons.sql的Perl ADO,无DSN 393
15.5.6 范例15-7:ex7.pl Oracle上的Perl DBI简单查询 395
15.5.7 范例15-8:ex8.pl Oracle上persons.sql的Perl DBI 397
15.6 练习:非编程 399
练习15 使用MSS 400
练习16 在MSS中执行persons.pl 401
练习17 使用Oracle 402
练习18 在Oracle中执行persons.pl 403
15.7 参考文献 405
第16章 与系统接口 406
16.1 系统调用 406
16.1.1 目录和文件 407
16.1.2 目录和文件属性 409
16.1.3 查找目录和文件 411
16.1.4 创建目录——mkdir函数 414
16.1.6 更改目录——chdir函数 415
16.1.5 删除目录——mdir函数 415
16.1.7 通过目录文件句柄访问目录 416
16.1.8 许可和所有权 419
16.1.9 硬和软链接 423
16.1.10 更改文件名 425
16.1.11 更改访问和修改时间 425
16.1.12 文件统计量 426
16.1.13 低级文件I/O 428
16.1.14 压缩和解压缩数据 431
16.2 进程 436
16.2.1 UNIX进程 436
16.2.2 Win32进程 437
16.2.3 环境(UNIX和Windows) 438
16.2.4 进程和文件句柄 439
16.2.5 进程优先权和Nice 442
16.2.6 口令信息 443
16.2.7 时间和进程 448
16.2.8 UNIX进程创建 451
16.2.9 Win32进程创建 455
16.3 其他与操作系统接口的途径 458
16.3.1 syscall函数和h2hp脚本 458
16.3.2 命令替换——备份引号 459
16.3.3 Shell.pm模块(Perl) 460
16.3.4 system函数 461
16.3.5 here documents 462
16.3.6 Globbing(文件名扩展和通配符) 463
16.4 错误处理 465
16.4.1 die函数 465
16.4.2 warn函数 466
16.4.3 eval函数 467
16.5 信号 469
第17章 报告编写示例 474
17.1 模板 474
17.1.1 定义模板步骤 474
17.1.2 改变文件句柄 476
17.1.3 页眉格式 477
17.1.4 select函数 482
17.1.5 多行字段 484
17.1.6 填充字段 485
第18章 网上发送 488
18.1 网络与Perl 488
18.2 客户机/服务器模式 488
18.3 网络协议(TCP/IP) 488
18.3.1 以太网协议(硬件) 488
18.3.2 Intemet协议(IP) 489
18.3.3 传输控制协议(TCP) 489
18.3.4 用户数据报协议(UDP) 489
18.4 网络地址 489
18.4.1 pack和unpack函数 489
18.4.5 Perl协议函数 491
18.4.4 端口号 491
18.4.3 IP地址 491
18.4.2 Ethemet地址 491
18.4.6 Perl的服务器函数 493
18.4.7 Perl主机信息函数 495
18.5 套接字 497
18.5.1 套接字类型 497
18.5.2 套接字域 498
18.5.3 创建套接字 498
18.5.4 绑定地址和套接字名 499
18.5.5 创建套接字队列 499
18.5.6 等待客户机请求 499
18.5.7 建立套接字连接 500
18.6 客户机/服务器程序 501
18.5.8 关闭套接字 501
18.6.1 同一机器上面向连接的套接字 502
18.6.2 远程机器(Internet客户机和服务器)上面向连接的套接字 505
18.7 Socket.pm模块 508
第19章 CGI与Perl 513
19.1 什么是CGI 513
19.2 客户机和服务器之间的Internet通信 514
19.2.1 HTTP服务器 514
19.2.2 HTTP状态代码和Log文件 515
19.2.3 URL(统一资源定位符) 516
19.3 使用HTML创建Web页面 519
19.4 HTML与CGI如何协作 522
19.5 日志文件 525
19.6 在哪里找CGI程序 526
19.7 信息进出CGI脚本 527
19.8 使用CGI处理表单 530
19.8.1 表单输入类型 531
19.8.2 创建HTML表单 531
19.8.3 GET方法 534
19.8.4 处理表单 537
19.8.5 总结 540
19.8.6 处理电子邮件 546
19.8.7 附加路径信息 552
19.8.8 服务器端包含 555
19.9.2 优点 557
19.9.3 使用CGI.pm编程的两种形式 557
19.9.1 引言 557
19.9 CGI.pm模块 557
19.9.4 如何处理表单的输入 559
19.9.5 CGI.pm表单元素 569
19.9.6 HTTP头方法 591
练习19 为Perl冲浪 593
练习20 使用CGI.pm 595
附录A Perl固有函数、编译指示、模块和调试器 597
A.1 Perl函数 597
A.2 特殊变量 624
A.3 Perl编译指示 627
A.4 Perl模块 628
A.5 命令行开关 632
A.6 调试器 633
附录B 有用的Perl脚本 638
B.1 Mark Houser的taintperl脚本 638
B.2 John J.Nouveaux的maxpstat 657
B.3 John J.Nouveaux的随机程序 664
附录C 面向对象的Perl/CGI程序 667
附录D HTML文档:基础介绍 680
D.1 引言 680
D.2 什么是HTML 680
D.3.2 要求元素及其标记的顺序 681
D.3.3 元素:它们是什么和如何使用 681
D.3 HTML标记 681
D.3.1 要求元素 681
D.4 最小的HTML文档 682
D.4.1 标题 683
D.4.2 文本分隔标记 683
D.4.3 列表 683
D.4.4 能带来娱乐性和便利性的表 684
D.5 字符格式 684
D.6.2 链接到URL(统一资源定位符) 685
D.6.1 创建链接 685
D.7 添加注释 685
D.5.2 物理标记 685
D.5.1 逻辑标记 685
D.6 链接 685
D.8 大小写相关性 686
D.9 图形和图像 686
D.9.1 创建内嵌图像 686
D.9.2 复杂标记 686
D.9.3 调整和放置图像 686
D.9.4 创建图像的文本替换 687
D.9.5 在何处找图像 687
D.9.6 背景图像 687
D.9.7 创建背景 687
D.9.10 图像更新 688
D.9.11 外部配有声音的图像 688
D.9.9 条,项目符号和图标 688
D.9.8 默认颜色 688
D.10 疑难解答 689
D.10.1 询问Heloise 689
D.10.2 一些在HTML方面有帮助的站点 690
D.11 元标记,层叠样式表和Java 690
D.11.1 元标记例子(第一部分) 690
D.11.2 元标记例子(第二部分) 691
D.11.3 元标记例子(第三部分) 691
D.11.4 样式表例子 691
D.11.5 JavaScript例子 692
D.12 看一看幕后(或在右击之前做什么) 692
D.13 关于框架 693
D.14 最后的一些考虑 693