1.1深入分析 1
1.1.1Perl概述 1
目录 1
第1章 Perl基础 1
1.1.2Perl5.6的新功能 3
1.2.1获取和安装Perl 4
1.2快速解决方案 4
1.2.2获取Perl安装的细节 6
1.2.3编写代码:创建代码文件 7
1.2.4编写代码:语句和声明 8
1.2.5编写代码:查找Perl解释程序 9
1.2.6编写代码:查找Perl模块 12
1.2.7运行代码 13
1.2.8运行代码:使用命令行开关 15
1.2.9运行代码:使用-w开关显示警告 18
1.2.10运行代码:使用-e开关从命令行执行代码 19
1.2.12运行代码:交互式执行 20
1.2.11运行代码:使用-c开关检查语法 20
1.2.14基本技能:使用print函数 23
1.2.13基本技能:文字输入输出 23
1.2.15基本技能:文字格式化 24
1.2.17基本技能:阅读键盘输入 26
1.2.16基本技能:给代码增加注释 26
1.2.18基本技能:使用默认变量$_ 27
1.2.19基本技能:整理键盘输入 29
1.2.20基本技能:避免脚本在Windows中迅速关闭 30
1.2.21基本技能:设计Perl程序 31
2.1深入分析 34
第2章 标量变量和表 34
2.1.2表 35
2.1.1标量 35
2.2.1什么是标量 36
2.2快速解决方案 36
2.1.3标量和表工作环境 36
2.2.2标量命名 37
2.2.4值运算符作用于标量 38
2.2.3声明标量 38
2.2.5什么是左值 39
2.2.6在标量中使用数字 40
2.2.8声明常量 41
2.2.7使用未定义数值:undef 41
2.2.9处理Perl中的真值 42
2.2.10十进制和二进制之间的转换 43
2.2.12十进制和十六进制之间的转换 44
2.2.11十进制和八进制之间的转换 44
2.2.14数字的圆整 45
2.2.13给标量赋默认值 45
2.2.15在标量中使用字符串 47
2.2.17字符与数字转换 49
2.2.16是字符串还是数字 49
2.2.18使用变量插值 50
2.2.19使用高级插值 52
2.2.20处理引号和裸词 53
2.2.21什么是表 56
2.2.22通过索引访问表元素 57
2.2.23将表赋值给其他表 58
2.2.24表连接到字符串 59
2.2.25字符串拆成表 60
2.2.26使用map作用于表中的每项 61
2.2.27使用grep寻找符合标准的表项 62
2.2.28表排序 64
2.2.30强制进入标量环境 66
2.2.29表的反向排列 66
3.1.1数组概述 68
3.1深入分析 68
第3章 数组和哈希表 68
3.1.2哈希表概述 69
3.2.1创建数组 70
3.2快速解决方案 70
3.1.3通配量 70
3.2.2使用数组 72
3.2.3数组出栈和入栈 73
3.2.4数组移位和反移位 75
3.2.5确定数组长度 76
3.2.7清空数组 78
3.2.6扩增或缩减数组 78
3.2.9使用数组片 79
3.2.8合并与附加数组 79
3.2.10在数组中循环 80
3.2.11打印数组 82
3.2.12拼接数组 83
3.2.13数组反向 84
3.2.14数组排序 85
3.2.17读取命令行参数:@ARGV数组 86
3.2.16删除数组元素 86
3.2.15确定数组是否初始化 86
3.2.18创建哈希表 87
3.2.19使用哈希表 90
3.2.21确定哈希表是否拥有特定键 92
3.2.20哈希表添加元素 92
3.2.23在哈希表中循环 93
3.2.22删除哈希表元素 93
3.2.24打印哈希表 95
3.2.25调换哈希表的键和数值 96
3.2.26哈希表排序 97
3.2.28在表赋值中使用哈希表和数组 98
3.2.27合并两个哈希表 98
3.2.30使用通配量 99
3.2.29为哈希表预分配内存空间 99
3.2.31通配量是符号表项 101
4.1.1比较函数与运算符 102
4.1深入分析 102
第4章 运算符和优先级 102
4.1.2运算符优先级 103
4.2.1最高优先级:项目和左向表运算符 105
4.2快速解决方案 105
4.2.3处理自加和自减操作:++和-- 106
4.2.2使用箭头运算符:-> 106
4.2.4处理乘幂操作: 107
4.2.5使用一元符号运算符:?,-,~和\ 108
4.2.7处理乘除运算:*和 109
4.2.6使用绑定运算符:=~和!= 109
4.2.9处理加、减和连接(+、-和.) 110
4.2.8处理取模和重复:%和x 110
4.2.10使用移位运算符:〈〈和〉〉 111
4.2.12使用文件测试运算符 112
4.2.11使用命名的一元运算符 112
4.2.13使用关系(比较)运算符 114
4.2.14使用相等运算符 115
4.2.16按位与值:& 116
4.2.15比较浮点数 116
4.2.17按位或:| 117
4.2.18位异或运算符:^ 118
4.2.19字符串位运算符 119
4.2.20使用C语言风格的逻辑与: 120
4.2.21使用C语言风格的逻辑或: 121
4.2.22使用范围运算符: 122
4.2.23使用条件运算符:?: 123
4.2.24处理赋值运算符:=,+=,-=等 124
4.2.26右向表运算符 125
4.2.25使用逗号运算符:, 125
4.2.28使用逻辑与:and 126
4.2.27使用逻辑否:not 126
4.2.29使用逻辑或:or 127
4.2.30使用逻辑异或:xor 128
4.2.32文件输入/输出运算符:〈〉 129
4.2.31引号与类引号运算符 129
4.2.33Perl没有的C运算符 131
5.1.1条件语句 133
5.1深入分析 133
第5章 条件语句与循环 133
5.1.2循环语句 134
5.2.1Perl中的简单和复合语句 135
5.2快速解决方案 135
5.2.2使用if语句 137
5.2.3反向if语句:unless 139
5.2.4使用for循环 140
5.2.5使用foreach循环 145
5.2.6使用while在元素中循环 147
5.2.7相反的while循环:until 151
5.2.8使用map在元素中循环 153
5.2.9使用grep寻找元素 154
5.2.10使用if、unless、until、while和foreach修饰语句 155
5.2.11使用do语句创建dowhile循环 157
5.2.12使用next跳到下一个循环重复过程 158
5.2.13使用last命令结束循环 160
5.2.14使用redo循环命令重复循环过程 161
5.2.15创建switch语句 162
5.2.17使用eval函数执行代码 164
5.2.16使用goto语句 164
5.2.18使用exit语句结束程序 165
5.2.19使用die语句 166
6.1.1使用正则表达式 167
6.1深入分析 167
第6章 正则表达式 167
6.2.1创建正则表达式:概述 170
6.2快速解决方案 170
6.2.2创建正则表达式:字符 171
6.2.3创建正则表达式:字符类 174
6.2.5创建正则表达式:量词 175
6.2.4创建正则表达式:多重匹配模式 175
6.2.6创建正则表达式:断言 177
6.2.7创建正则表达式:引用前一次匹配的向后引用 178
6.2.8创建正则表达式:正则表达式扩展 180
6.2.9与m//和s///一起使用修饰符 182
6.2.10用tr///转换字符串 183
6.2.12配单词 184
6.2.11和tr///一起使用修饰符 184
6.2.13配行首 185
6.2.14匹配行尾 186
6.2.15检查数字 187
6.2.16检查字母 188
6.2.18配多行文本 191
6.2.17从上一个模式结束的地方开始查找:\G 191
6.2.20提取子字符串 193
6.2.19使用不区分大小写的匹配 193
6.2.21在正则表达式中使用函数调用和Perl表达式 194
6.2.23降低量词的“贪婪”程度:最小匹配 195
6.2.22查找重复的单词 195
6.2.25使用断言来预测和回想 196
6.2.24删除先导和尾部空格 196
6.2.26编译正则表达式 197
7.1.1编写子程序 200
7.1深入分析 200
第7章 子程序 200
7.1.2设置范围 201
7.1.3返回值 202
7.2.1声明子程序 203
7.2快速解决方案 203
7.2.2使用子程序原型 205
7.2.3定义子程序 207
7.2.4调用子程序 208
7.2.5调用之前检查子程序是否存在 209
7.2.6读取传递给子程序的参数 210
7.2.8为参数设置默认值 213
7.2.7使用不同个数的参数 213
7.2.9子程序(函数)的返回值 214
7.2.10返回undef指出操作失败 216
7.2.11用my设置范围 217
7.2.13用local创建临时变量 219
7.2.12要求词汇范围的变量 219
7.2.14确定my和local之间的差别 220
7.2.15用out设置范围 221
7.2.16创建永久(静态)变量 222
7.2.17得到子程序的名称和caller 224
7.2.18递归调用子程序 225
7.2.20按引用传递 226
7.2.19嵌套子程序 226
7.2.21按引用返回 227
7.2.23用wantarray检查必要的返回上下文 228
7.2.22传递符号表项(Typeglob) 228
7.2.25模拟命名参数 229
7.2.24创建内联函数 229
7.2.26覆盖内置子程序 230
7.2.28创建子程序调度表 231
7.2.27创建匿名子程序 231
7.2.29重新定义子程序 232
8.1.1Perl格式 234
8.1深入分析 234
第8章 格式和字符串处理 234
8.2.1显示非格式化文本:Perlhere文档 236
8.2快速解决方案 236
8.2.2创建格式化文本 238
8.2.3格式:左对齐文本 239
8.2.5格式:文本居中 240
8.2.4格式:右对齐文本 240
8.2.7格式:格式化多行输出 241
8.2.6格式:打印数字 241
8.2.8格式:用文本切片格式化输出多行文本 242
8.2.9格式:无格式多行输出 243
8.2.10格式:表单顶部输出 244
8.2.11格式:使用格式变量 245
8.2.12格式:向文件打印格式化文本 246
8.2.13格式:创建多页面报表 247
8.2.14格式:低级格式化 248
8.2.15字符串处理:用lc和uc转换大小写 249
8.2.17字符串处理:用index和rindex查找字符串 250
8.2.16字符串处理:用lcfirst和ucfirst转换第1个字母的大小写 250
8.2.18字符串处理:用substr得到子串 251
8.2.19字符串处理:用length得到字符串长度 252
8.2.20字符串处理:打包和解包字符串 253
8.2.21字符串处理:用sprintf格式化字符串 256
8.2.22字符串处理:比较字符串 257
8.2.23字符串处理:用ord和chr访问Unicode值 259
8.2.24字符串处理:按字符处理字符串 260
8.2.26字符串处理:用crypt加密字符串 261
8.2.25字符串处理:颠倒字符串 261
8.2.27字符串处理:使用引用运算符 263
8.2.28POD:普通文档说明 267
8.2.29POD:用POD命令创建POD 268
8.2.30POD:用POD命令格式化文本 269
8.2.31POD:在Perl代码中嵌入POD 270
9.1.1直接引用 273
9.1深入分析 273
第9章 引用 273
9.1.2符号引用 275
9.1.4匿名数组、哈希表和子程序 276
9.1.3箭头运算符 276
9.2.1创建直接引用 277
9.2快速解决方案 277
9.2.2创建匿名数组的引用 282
9.2.3创建匿名哈希表的引用 284
9.2.4创建对匿名子程序的引用 285
9.2.6用符号表得到引用 286
9.2.5用匿名哈希表模仿用户自定义数据类型 286
9.2.7反引用引用 288
9.2.8用箭头运算符进行反引用 290
9.2.9忽略箭头运算符 291
9.2.10按引用传递和返回子程序参数 293
9.2.11用ref运算符确定引用类型 294
9.2.12创建符号引用 296
9.2.13禁止符号引用 298
9.2.16类似哈希表的数组:作为哈希表引用使用数组引用 299
9.2.15使用弱引用 299
9.2.14避免循环引用 299
9.2.17在Perl中创建永久范围闭包 300
9.2.18从函数模板创建函数 301
10.1深入分析 303
第10章 预定义变量 303
10.1.1预定义变量的英语版 304
10.1.2为特定的文件句柄设置预定义变量 306
10.2.3$!:当前Perl错误 308
10.2.2$-:页码上剩余的格式化行数 308
10.2快速解决方案 308
10.2.1$:匹配后字符串 308
10.2.5$#:打印数字的输出格式 309
10.2.4$”:插入数组值的输出字段分隔符 309
10.2.8$ :最近模式匹配 310
10.2.7$%:当前格式输出页面 310
10.2.6$$:进程号 310
10.2.11$*:多行匹配 311
10.2.10$):有效组编号 311
10.2.9$(:真实分组编号 311
10.2.13$.:当前输入行号 312
10.2.12$,:输出字段分隔符 312
10.2.16$;:下标分隔符 313
10.2.15$::格式字符串分段字符 313
10.2.14$/:输入记录分隔符 313
10.2.17$?:上一次管道关闭,backtick命令,或者系统调用状态 314
10.2.19$[:数组基数 315
10.2.18$@:来自最后一个eval的错误 315
10.2.22$^:当前页面顶部格式 316
10.2.21$]:Perl版本 316
10.2.20$\:输出记录分隔符 316
10.2.23$^A:书写累加器 317
10.2.26$^E:针对操作系统的特定错误信息 318
10.2.25$^D:当前调试标记 318
10.2.24$^C:编译开关 318
10.2.31$^M:紧急事件内存缓冲区 319
10.2.30$^L:输出格式换行 319
10.2.27$^F:最大Unix系统文件描述符 319
10.2.28$^H:当前语法检查 319
10.2.29$^I:当前Inplace编辑值 319
10.2.34$^R:最后一个正则表达式断言的结果 320
10.2.33$^P:调试支持 320
10.2.32$^O:操作系统名称 320
10.2.36$^T:脚本开始运行的时间 321
10.2.35$^S:解释程序的状态——eval内部或者外部 321
10.2.38$^W:警告开关的当前值 322
10.2.37$^V:作为字符串的Perl版本 322
10.2.39$^X:可执行文件名称 323
10.2.42$:默认变量 324
10.2.41${^WIDESYSTEMCALLS}:宽字符系统调用 324
10.2.40${^WARNINGBITS}:警告检查 324
10.2.43$?:匹配前字符串 325
10.2.45$~:当前报告格式的名称 326
10.2.44$|:关闭缓冲区 326
10.2.46$+:最后一次括号匹配 327
10.2.48$=:格式当前页面长度 328
10.2.47$<:真实用户ID 328
10.2.50$0:脚本名称 329
10.2.49$>:有效用户ID 329
10.2.52$n:模式匹配编号n 330
10.2.51$ARGV:当前〈〉输入文件的名称 330
10.2.53%:::主要符号表(%main::) 331
10.2.54%ENV:环境变量 332
10.2.56%SIG:信号处理程序 333
10.2.55%INC:包含文件 333
10.2.57@_:子程序参数 334
10.2.58@ARGV:命令行参数 335
10.2.59@INC:计算脚本的位置 336
11.1.1Perl数 337
11.1深入分析 337
第11章 内置函数:数据处理 337
11.2.2atan2:反正切 338
11.2.1abs:绝对值 338
11.2快速解决方案 338
11.2.3Math::BigInt和Math::BigFloat:大数 339
11.2.5Math::Complex:复数 340
11.2.4chr:字符码中的字符 340
11.2.7each:哈希表键/值对 341
11.2.6cos:余弦 341
11.2.8eval:运行期间计算Perl代码 342
11.2.9exists:检查哈希表键 343
11.2.11grep:查找匹配元素 344
11.2.10exp:计算e的幂 344
11.2.12hex:从16进制转换 345
11.2.14int:截断整数 346
11.2.13index:子串的位置 346
11.2.16join:将表加入到字符串中 347
11.2.15整数计算 347
11.2.17keys:得到哈希表键 348
11.2.19Icfirst:第一个字符转换为小写 349
11.2.18Ic:转换为小写 349
11.2.21pack:将值打包到字符串中 350
11.2.20length:得到字符串的长度 350
11.2.22POSIX函数 352
11.2.23rand:创建随机数 354
11.2.24reverse:颠倒表 355
11.2.26sin:正弦 356
11.2.25rindex:颠倒索引 356
11.2.27sort:排序表 357
11.2.28split:字符串拆分为字符串数组 359
11.2.29sprintf:格式化字符串 360
11.2.30sqrt:平方根 361
11.2.32substr:得到子串 362
11.2.31srand:设置随机数种子 362
11.2.33time:得到从1970年1月1日以来的秒数 363
11.2.34Math::Trig中的三角函数 364
11.2.35uc:转换为大写 365
11.2.37unpack:从打包字符串中解开值 366
11.2.36ucfirst:大写第一个字符 366
11.2.39vec:访问无符号整数向量 368
11.2.38values:得到哈希表值 368
12.1.1使用Perl输入/输出 369
12.1深入分析 369
第12章 内置函数:输入/输出 369
12.2.1alarm:发送警告信号 370
12.2快速解决方案 370
12.2.2使用sleep函数 371
12.2.3carp、cluck、croak和confess:报告警告和错误 372
12.2.4chomp和chop:删除行尾 373
12.2.5curses:终端屏幕处理接口 374
12.2.6die:由于错误而退出 377
12.2.8getc:得到输入字符 378
12.2.7Expect:控制其他应用程序 378
12.2.10POSIX::Termios:低级终端接口 380
12.2.9记录错误 380
12.2.11print:打印列表数据 382
12.2.12print打印格式化列表数据 383
12.2.14用尖括号读取输入:〈〉 385
12.2.13控制台上的彩色打印 385
12.2.15重定向STDIN、STDOUT和STDERR 386
12.2.17Term::Cap:定位光标以显示文本 388
12.2.16Term::Cap:清除屏幕 388
12.2.18Term::ReadKey:简单终端驱动程序控制 389
12.2.20warn:显示警告 394
12.2.19Term::ReadLine:支持命令行编辑 394
12.2.21write:写入格式化记录 395
13.1.1Perl中的文件处理 397
13.1深入分析 397
第13章 内置函数:文件处理 397
13.2.1open:打开文件 398
13.2快速解决方案 398
13.2.2close:关闭文件 400
13.2.3print:打印到文件 401
13.2.4write:向文件中写入 402
13.2.5binmode:设置二进制模式(适用于MS-DOS) 404
13.2.6设置输出通道缓冲方式 405
13.2.8使用角运算符〈〉从文件句柄中读取 406
13.2.7从命令行读取传递的文件 406
13.2.9read:逐个字节读取输入 407
13.2.11getc:读取一个字符 408
13.2.10readline:读取一行数据 408
13.2.12seek:设置文件中的当前位置 409
13.2.13tell:得到文件中的当前位置 410
13.2.14stat:得到文件状态 411
13.2.15POSIX:文件函数 412
13.2.17eof:测试文件尾 413
13.2.16select:设置默认输出文件句柄 413
13.2.18flock:锁定文件以进行独占访问 414
13.2.19删除或者添加回车——从DOS到Unix和从Unix到DOS 415
13.2.21统计文件中的行数 417
13.2.20在程序代码中存储文件 417
13.2.22向子程序传递文件句柄 418
13.2.23复制和重定向文件句柄 420
13.2.25就地编辑文件 421
13.2.24创建临时文件名 421
13.2.26向文本文件中写入数组和从文本文件中读取数组 422
13.2.27向文本文件中读/写哈希表 423
13.2.28使用固定长度的记录进行随机访问 424
13.2.29chmod:修改文件权限 425
13.2.30glob:查找匹配的文件 426
13.2.32unlink:删除文件 427
13.2.31rename:重命名文件 427
13.2.36readdir:读取目录项 428
13.2.35closedir:关闭目录句柄 428
13.2.33copy:复制文件 428
13.2.34opendir:打开目录句柄 428
13.2.40chdir:改变工作目录 429
13.2.39rewinddir:将目录位置设置到开头 429
13.2.37telldir:得到目录位置 429
13.2.38seekdir:设置目录中的当前位置 429
13.2.42rmdir:删除目录 430
13.2.41mkdir:创建目录 430
14.1深入分析 431
第14章 标准模块 431
14.1.1可用的标准模块 432
14.1.2使用do,require和use 436
14.2.1安装模块 437
14.2快速解决方案 437
14.2.2Benchmark:测试代码执行时间 441
14.2.3Class::Struct:创建C样式的结构 442
14.2.6Cwd:得到当前工作目录的路径 443
14.2.5CreditCard:检查信用卡号 443
14.2.4constant:创建常量 443
14.2.7Data::Dumper:显示结构化数据 444
14.2.9diagnostics:打印完整的诊断结果 446
14.2.8Date::Calc:日期和时间相加和相减 446
14.2.10English:为预定义变量取英语名称 447
14.2.11Env:导入环境变量 450
14.2.13File::Compare:比较文件 451
14.2.12ExtUtils:支持Perl扩展 451
14.2.14File::Find:在目录中查找文件 452
14.2.15FileCache:保存多个打开的输出文件 453
14.2.16GetOpt:解释命令行开关 454
14.2.17locale:启用区分地域的操作 456
14.2.19Shell:作为子程序使用命令行解释器命令 457
14.2.18safe:创建安全代码隔间 457
14.2.20strict:限制编码习惯 458
14.2.21Text::Abbrev:找到惟一的缩写 459
14.2.23Text::Wrap:封装文本行 460
14.2.22Text::Tabs:在文本中使用制表位 460
14.2.25Tie::RefHash:在哈希表中存储直接引用 461
14.2.24Tie::lxHash:按插入顺序恢复哈希表值 461
14.2.27vars:预先声明的全局变量 462
14.2.26Time:创建时间惯例 462
15.1深入分析 463
第15章 Perl/Tk——窗口、按钮及其他 463
15.2.2使用标签部件 467
15.2.1创建Tk窗口 467
15.2快速解决方案 467
15.2.3使用按钮部件 469
15.2.4使用文本部件 470
15.2.5指定索引 472
15.2.6用pack排列Tk部件 473
15.2.7绑定Tk事件和代码 474
15.2.8使用单选按钮和复选框部件 475
15.2.9使用列表框部件 479
15.2.10使用标尺部件 482
15.2.11使用滚动条部件 484
15.2.12使用画布部件 486
15.2.13显示图像 488
15.2.15用框架安排部件 490
15.2.14显示位图 490
15.2.16用place安排部件 492
15.2.17使用输入部件 493
15.2.18用Scrolled构造函数滚动部件 494
15.2.19使用菜单部件 495
15.2.20使用级联菜单、复选菜单、单选菜单、菜单加速器 496
15.2.21使用对话框 501
16.1.1Perl中的数据结构 503
16.1深入分析 503
第16章 数据结构和数据库 503
16.1.2好的想法:usestrictvars 506
16.1.3Perl中的数据库 507
16.2.1为复杂记录存储引用和其他元素 508
16.2快速解决方案 508
16.2.2使用数组的数组(多维数组) 510
16.2.3创建数组的数组 511
16.2.4访问数组的数组 513
16.2.6创建哈希表的哈希表 515
16.2.5使用哈希表的哈希表 515
16.2.7访问哈希表的哈希表 517
16.2.9创建哈希表的数组 519
16.2.8使用哈希表的数组 519
16.2.10访问哈希表的数组 522
16.2.11使用数组的哈希表 523
16.2.12创建数组的哈希表 524
16.2.14使用链表和环形缓冲区 525
16.2.13访问数组的哈希表 525
16.2.15在磁盘上存储数据结构 527
16.2.17打印数据结构 528
16.2.16复制数据结构 528
16.2.18创建数据结构类型 530
16.2.19写数据库文件 532
16.2.20读取数据库文件 533
16.2.21数据库排序 534
16.2.23执行SQL 535
16.2.22文本文件作为数据库处理 535
17.1.1包 537
17.1深入分析 537
第17章 创建包和模块 537
17.1.2模块 539
17.2.1创建包 540
17.2快速解决方案 540
17.2.2创建包构造函数:BEGIN 541
17.2.4确定当前包名 542
17.2.3创建包析构函数:END 542
17.2.5跨过文件界线拆分包 543
17.2.7创建模块 544
17.2.6用our跨过包设置全局范围 544
17.2.8默认从模块导出符号 545
17.2.10阻止自动符号导入 546
17.2.9允许符号从模块中导出 546
17.2.11阻止符号导出 547
17.2.12不带import方法的导出 548
17.2.13在编译期间用未知包名限制符号 549
17.2.14重新定义内置子程序 550
17.2.15创建嵌套模块 551
17.2.16设置并检测模块版本号 552
17.2.17在模块中自动加载子程序 553
17.2.18用AUTOLOAD仿真子程序 555
17.2.19使用AutoLoader和SelfLoader 556
17.2.20用h2xs创建专业模块和模块模板 557
17.2.21测试模块 559
17.2.22压缩模块以备发布 560
17.2.24XS:在C中创建Perl扩展名 561
17.2.23提交模块到CPAN 561
17.2.25传递数值到XSUB 564
17.2.26从XSUB返回表 565
18.1深入分析 569
第18章 创建类和对象 569
18.1.2对象 570
18.1.1类 570
18.1.4数据成员 571
18.1.3方法 571
18.2.2创建构造函数初始化对象 572
18.2.1创建类 572
18.1.5继承 572
18.2快速解决方案 572
18.2.3从类创建对象 575
18.2.4创建类对象 577
18.2.5创建对象方法(实例方法) 578
18.2.6调用方法 580
18.2.7在对象内存储数据(实例变量) 582
18.2.8创建数据访问方法 583
18.2.9标记实例方法和变量为私有 585
18.2.10创建对象共享的类变量 586
18.2.11创建析构函数 587
18.2.12实现类继承 588
18.2.13继承构造函数 590
18.2.14继承实例数据 591
18.2.15多重继承 593
19.1.1数据类型与类连接 595
19.1深入分析 595
第19章 面向对象编程 595
19.1.2面向对象编程的私有性 596
19.1.3重载运算符 597
19.2.1覆盖基类方法 598
19.2快速解决方案 598
19.1.4附加的OOP主题 598
19.2.2访问已覆盖的基类方法 599
19.2.3标量与类相连接 600
19.2.4数组与类连接 602
19.2.5哈希表与类连接 604
19.2.6使用PerlUNIVERSAL类 605
19.2.7用闭包创建私有数据成员 606
19.2.8使用匿名子程序创建私有方法 608
19.2.9创建对方法的引用 611
19.2.10数据成员用作变量 612
19.2.11使用包含其他对象的对象 613
19.2.12委托的类关系 614
19.2.13重载二元运算符 616
19.2.14重载一元运算符 619
20.1.2编写套接字程序 622
20.1.1编写Internet程序 622
第20章 Internet和套接字编程 622
20.1深入分析 622
20.1.3客户和服务器 623
20.2.1获得DNS地址 624
20.2快速解决方案 624
20.2.2使用FTP 625
20.2.3使用LWP::Simple获取Web页面 627
20.2.4用LWP::UserAgent获取Web页面 628
20.2.5Ping主机 629
20.2.6从新闻组下载布告 630
20.2.7接收电子邮件 631
20.2.8发送电子邮件 633
20.2.9使用Telnet 634
20.2.10套接字匹配对应用于进程间通信 635
20.2.11采用IO::Socket创建TCP客户 637
20.2.12采用IO::Socket创建TCP服务器 640
20.2.13采用多线程及IO::Socket创建交互式双向客户/服务器应用程序 642
20.2.14使用Socket创建TCP客户 646
20.2.15使用Socket创建TCP服务器 648
20.2.16创建Unix域套接字客户 651
20.2.17创建Unix域套接字服务器 652
20.2.18查看是可以从套接字中读取还是可以写到套接字 653
20.2.20创建UDP服务器 654
20.2.19创建UDP客户 654
21.1.1使用CGI.pm进行CGI编程 656
21.1深入分析 656
第21章 CGI编程:CGI.pm 656
21.1.2在cgil.cgi中创建HTML控件 663
21.1.3在cgi2.cgi中读取HTML控件的数据 667
21.2.1使用PerlScript 674
21.2快速解决方案 674
21.2.3显示图像 675
21.2.2启动HTML文档 675
21.2.5居中HTML元素 676
21.2.4创建HTML标题 676
21.2.6创建项目编号列表 677
21.2.9创建HTML表单 678
21.2.8创建横线 678
21.2.7创建超链接 678
21.2.10处理文本字段 679
21.2.12处理文本区域 680
21.2.11读取HTML控件中的数据 680
21.2.13处理复选框 681
21.2.14处理滚动列表 682
21.2.15处理单选按钮 683
21.2.16处理口令字段 684
21.2.17处理弹出菜单 685
21.2.18处理隐藏数据字段 686
21.2.20结束HTML表单 687
21.2.19创建Submit和Reset按钮从HTML表单上传数据 687
21.2.22从网页调用CGI脚本 688
21.2.21结束HTML文档 688
21.2.23创建图像映射 690
21.2.24创建框架 692
21.2.25非面向对象的CGI编程 693
21.2.26调试CGI脚本 694
22.1深入分析 698
第22章 CGI:创建Web计数器、来宾簿、电子邮件程序和安全脚本 698
22.1.1CGI安全 699
22.2.1认真对待安全性 700
22.2快速解决方案 700
22.2.2处理被感染的数据 701
22.2.4在Unix中赋予CGI脚本更多的特权 703
22.2.3未感染的数据 703
22.2.5确定浏览器处理的MIME类型 704
22.2.6从CGI脚本返回图像 705
22.2.7创建网页点击计数器 707
22.2.8创建来宾簿 713
22.2.9从CGI脚本发送电子邮件 719
23.1深入分析 726
第23章 CGI:创建多用户聊天、服务器推技术、cookie和游戏 726
23.2.1创建多用户聊天应用程序 727
23.2快速解决方案 727
23.2.2使用服务器推技术 735
23.2.3使用服务器端包含 737
23.2.4写和读Cookies 739
23.2.5创建游戏 744
24.1.1处理CGI.pm 753
24.1深入分析 753
第24章 CGI:创建购物车、数据库、站点搜索和文件上传 753
24.2.2使用CGI环境变量检查浏览器类型及更多信息 755
24.2.1在重新显示的表单中初始化数据 755
24.2快速解决方案 755
24.2.3检查用户是否登录 757
24.2.5数据库CGI编程 760
24.2.4重定向浏览器 760
24.2.6上传文件 767
24.2.7Web站点搜索:查询匹配字符串 771
24.2.8购物车演示程序 778
24.2.9没有Cookies的购物车演示程序 789
第25章 XML::DOM解析 797
25.1深入分析 797
25.1.1XML看起来像什么? 797
25.1.2格式良好的有效XML文档 801
25.1.3XML文档类型定义 803
25.1.4在DTD中指定属性 807
25.1.5XML和Perl 809
25.1.6XML::DOM模块 812
25.2快速解决方案 816
25.2.1使用XML::DOM 816
25.2.2DOM解析:DOMParser.pl示例 823
25.2.3处理文档节点 827
25.2.4处理元素节点 828
25.2.5处理属性节点 829
25.2.6处理文本节点 830
25.2.7处理XML处理指令节点 831
25.2.8结束元素节点 832
25.2.9运行DOMParser.pl示例 833
26.1深入分析 835
26.1.1在XML文档中导航 835
第26章 XML:修改文档内容和SAX解析 835
26.1.2修改XML文档 836
26.1.3XML的简单API 836
26.2快速解决方案 839
26.2.1在XML文档中导航 839
26.2.2搜索特定的XML元素 842
26.2.3创建新的XML元素 845
26.2.4创建新的XML属性 849
26.2.5替换XML元素 850
26.2.6删除XML元素 853
26.2.7处理错误 854
26.2.8使用SAX 857
26.2.9SAX解析:SAXParser.pl示例 861
26.2.10处理文档的开头 862
26.2.11处理元素的开头 862
26.2.12处理属性 863
26.2.13处理元素的末尾 863
26.2.14处理文本 864
26.2.15处理指令的处理 865
26.2.16处理文档的末尾 865
26.2.17运行SAXParser.pl 866
26.2.18使用SAX在XML文档中导航 867
26.2.19处理SAX解析中的错误 869
27.1.1XML和CGI 871
27.1深入分析 871
27.1.2CGI::XMLForm模块 871
第27章 CGI、SOAP和WML 871
27.1.3SOAP 874
27.1.4WML 875
27.2快速解决方案 882
27.2.1XML与CGI一起使用 882
27.2.2CGI::XMLForm写XML 891
27.2.3CGI::XMLForm查询XML 892
27.2.4使用SOAP 894
27.2.5WML:创建超链接 897
27.2.6WML:处理文本输入 897
27.2.7WML:使用Select元素 900
27.2.8WML:创建表 903
27.2.9WML:创建计时器 904
27.2.10WML:处理图像 905
27.2.11WML:接口到Perl 906
27.2.12WML:使用表单接口到Perl 908
27.2.13WML:将多个参数传递给Perl 909
28.1深入分析 912
28.1.1HTML、HTTP和LWP模块 912
第28章 代码中的Web处理 912
28.2快速解决方案 914
28.2.1获取并解析网页 914
28.1.2处理在线用户注册 914
28.2.2获取网页中的链接 916
28.2.3用LWP::UserAgent和HTTP::Request获取网页 918
28.2.4用IO::Socket获取网页 919
28.2.5创建镜像站点 921
28.2.6从代码中提交HTML表单 922
28.2.7创建小型Web服务器 927
28.2.8处理在线用户注册 929