《Perl技术内幕》PDF下载

  • 购买积分:24 如何计算积分?
  • 作  者:(美)Steven Holzer著;王晓娟,王朝阳等译
  • 出 版 社:北京:中国水利水电出版社
  • 出版年份:2003
  • ISBN:750841277X
  • 页数:932 页
图书介绍:

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