《Perl高级编程》PDF下载

  • 购买积分:27 如何计算积分?
  • 作  者:(英)Peter Wainwright等著;胡季红等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2002
  • ISBN:7111101405
  • 页数:1056 页
图书介绍:本书深入浅出地介绍了利用Perl语言进行编程的各方面知识。介绍了高级程序设计语言中都涉及的数据类型、特殊变量、表达式、语句和子例程等基本概念,阐述了文件与目录处理、终端输入与输出等。

第1章 概览 1

1.1 简介 1

1.1.1 关键的特性 2

1.1.3 Perl的历史和版本 3

1.1.2 支持平台 3

1.1.4 基础信息 4

1.2 构建和安装Perl 5

1.2.1 安装预构建的Perl发布版本 6

1.2.2 构建Perl源代码 8

1.2.4 用CPAN模块安装模块 12

1.2.3 构建和安装模块 12

1.3.1 启动Perl应用程序 21

1.3 运行Perl 21

1.3.2 命令行 23

1.3.3 命令行语法 24

1.3.4 Perl环境 26

1.4 小结 28

2.1 值和变量 29

第2章 基本概念 29

2.3 数据类型 30

2.2 空白区域 30

2.4 特殊变量 32

2.5 插值 33

2.6.1 标量上下文和列表上下文 34

2.6 上下文 34

2.7 操作符 35

2.6.2 空白上下文 35

2.9 控制结构 36

2.8 程序块 36

2.10 循环修饰符 38

2.11 子例程 39

2.13 作用域 40

2.12 函数 40

3.1 值转换和高速缓存 42

第3章 标量 42

3.2.1 整数 43

3.2 数字 43

3.2.2 浮点数 46

3.2.3 use integer编译指示 50

3.2.4 数学函数 51

3.3.1 引号和引用 52

3.3 字符串 52

3.3.2 here文档 54

3.3.3 裸词字符串和版本号 56

3.3.5 把字符串转换成列表和hash 58

3.3.4 把字符串转换成数字 58

3.3.6 操作字符串的函数 60

3.3.7 字符串格式化 69

3.4 小结 72

4.1 操作符与函数比较 73

第4章 操作符 73

4.2.1 赋值操作符 74

4.2 操作符类型和类别 74

4.2.2 算术操作符 75

4.2.3 移位操作符 76

4.2.4 字符串操作符和列表操作符 77

4.2.5 逻辑操作符 78

4.2.6 位操作符 79

4.2.7 组合赋值操作符 82

4.2.8 递增操作符和递减操作符 83

4.2.9 比较操作符 84

4.2.11 逗号操作符和关系操作符 86

4.2.10 正则表达式绑定操作符 86

4.2.13 箭头操作符 87

4.2.12 引用操作符和间接引用操作符 87

4.2.14 范围操作符 88

4.3 优先组和结合性 90

4.2.15 三元操作符 90

4.4 禁用函数和操作符 95

4.5 覆盖操作符 97

4.6 小结 98

5.1 列表和数组 99

第5章 标量之外的更多数据类型 99

5.1.1 操作数组 101

5.1.2 把列表和数组转换为标量 108

5.2 hash 110

5.2.1 操作 hash 112

5.2.2 把列表和数组转换为hash 114

5.2.3 把hash转换为标量 118

5.2.4 把hash转换为数组 119

5.2.5 特殊的hash变量% ENV 120

5.3 引用 124

5.4.1 嵌套带来的问题--列表被展开 132

5.4 复杂的数据结构 132

5.4.2 列表的列表和多维数组 133

5.4.3 hash的hash和其他复杂的数据结构 134

5.4.4 向复杂的数据结构添加元素和修改复杂的数据结构 135

5.4.5 编程实现复杂的数据结构 136

5.4.6 遍历复杂的数据结构 139

5.5.1 定义typeglob 142

5.5 typeglob 142

5.5.2 操作typeglob 143

5.5.3 访问typeglob 144

5.6 未定义值 145

5.6.1 存在测试 147

5.6.2 使用未定义值 148

5.6.3 把undef作为一个函数使用 149

5.7.1 使用constant编译指示声明标量常量 150

5.7 常量 150

5.7.3 常量引用 152

5.7.2 声明列表常量和hash常量 152

5.8 小结 153

5.7.4 列举和检查常量的存在 153

6.1.1 声明 155

6.1 表达式、语句和程序块 155

第6章 结构、流和控制 155

6.1.2 表达式和简单语句 156

6.1.3 程序块和复合语句 157

6.2 条件语句 162

6.2.1 真值的概念 163

6.2.2 if、else和elsif 164

6.2.3 unless 166

6.2.4 使用逻辑操作符写条件 167

6.2.5 三元操作符 168

6.2.6 开关和多分支条件 171

6.2.7 从多分支条件中返回值 173

6.3.1 使用for编写C样式的循环 174

6.3 循环和循环过程 174

6.3.2 使用foreach写出更好的循环 175

6.3.3 条件循环--while、until和do 179

6.3.4 控制循环执行 183

6.3.5 goto语句 187

6.3.6 map和grep 189

6.4 小结 191

7.1 声明子例程和调用子例程 192

第7章 子例程 192

7.1.1 匿名子例程和子例程引用 193

7.1.2 严格子例程和use strict subs编译指示 195

7.1.3 预声明子倒程 196

7.1.4 子例程栈 198

7.1.5 检查子例程和使Perl自动定义子例程 202

7.2 传递参数 204

7.2.1 传递列表和hash 206

7.2.3 直接把@_传递给子例程 208

7.2.2 把标量子例程转换为列表处理程序 208

7.2.4 命名参数 209

7.3 原型 212

7.3.1 定义参数的个数和它们的作用域 213

7.3.3 把子例程作为标量操作符 215

7.3.2 使用原型设计代码引用 215

7.3.4 请求变量而不是值 216

7.3.6 禁用原型 218

7.3.5 可选参数 218

7.4 从子例程中返回值 219

7.4.1 返回未定又值 220

7.4.2 对调用上下文的检测和响应 222

7.4.3 闭包 224

7.4.4 可赋值的子例程 226

7.5.1 定义子例程属性 227

7.5 属性列表 227

7.5.3 特殊属性 228

7.5.2 访问属性 228

7.5.4 包属性 229

7.6 小结 230

8.1.1 定义包变量 231

8.1 包变量 231

第8章 作用域和可见性 231

8.1.3 声明全局包变量 233

8.1.2 使用“严格的”变量 233

8.1.5 使用our词法声明全局包变量 234

8.1.4 使用use vars声明全局包变量 234

8.1.6 在Perl中自动局部化 235

8.1.7 使用local局部化包变量 236

8.2.1 声明词法变量 238

8.2 词法变量 238

8.2.2 在词法变量作用域外使用它们 239

8.3 符号表 240

8.3.1 main包 241

8.3.2 typeglob和main包 242

8.3.4 直接操作符号表 243

8.3.3 符号表层次 243

8.3.5 访问符号表 245

8.4 小结 246

9.1 模块和包 248

第9章 使用模块 248

9.2 使用do、require和use装载代码 249

9.2.1 导入列表 250

9.2.3 使用no禁用特性 251

9.2.2 禁止缺省导入 251

9.2.4 测试模块版本和Perl的版本 252

9.3.1 语用模块的工作原理 253

9.3 语用模块 253

9.4 特殊hash变量% INC 254

9.3.2 语用模块的作用域 254

9.5 特殊数组变量@ INC 255

9.5.1 直接修改@ INC 256

9.6 定位与脚本相关的库 257

9.5.2 使用lib编译指示修改@ INC 257

9.7 检查一个模块的可用性 258

9.8 找出被安装的模块 259

9.9 将模块的载入推迟至使用时 262

9.10 小结 264

10.1 BEGIN块、END块和其他程序块 265

第10章 模块与包内幕 265

10.1.1 BEGN块 267

10.1.3 CHECK和 INIT 269

10.1.2 END块 269

10.2 操作包 270

10.2.1 删除包 272

10.3 按程序方式查找包名 273

10.2.2 禁止包变量 273

10.4.1 自动加载子例程 274

10.4 自动加载 274

10.4.2 自行定义而不是自动加载子例程 278

10.4.3 自动加载模块 280

10.5 导入与导出 285

10.5.1 导入机制 286

10.5.2 导出 288

10.6 创建可安装的模块 299

10.6.1 编写良好的模块 300

10.6.2 创建一个工作目录 301

10.6.3 建立可安装的包 302

10.6.4 添加一个测试脚本 303

10.7 小结 304

10.6.5 将模块上载到CPAN 304

11.1.1 Perl的插值语法 306

11.1 字符串插值 306

第11章 正则表达式 306

11.1.2 插入元字符和字符代码 307

11.1.3 对变量进行插值 308

11.1.5 插值上下文 310

11.1.4 插值代码 310

11.1.6 正则表达式中的插值 311

11.1.8 保护字符串防止被插值 312

11.1.7 在字符串变量中插人文本 312

11.2 正则表达式 314

11.2.1 正则表达式出现在什么位置 315

11.2.2 正则表达式分隔符 318

11.2.3 正则表达式的元素 319

11.2.4 更高级的模式 321

11.2.5 模式匹配修饰符 330

11.2.6 正则表达式与通配符 332

11.2.7 元字符 333

11.2.8 提取匹配的文本 337

11.2.9 不止一次匹配 346

11.2.10 扩展模式 356

11.2.11 文档化正则表达式 357

11.2.12 书写有效的正则表达式 358

11.2.13 检查正则表达式的有效性 367

11.2.14 正则表达式、感染变量和调试 369

11.2.15 置换 375

11.2.16 音译 377

11.3 小结 380

12.1 10与文件句柄 381

第12章 利用文件句柄进行输入与输出 381

12.4 创建文件句柄 382

12.3 标准文件句柄 382

12.2 文件句柄数据类型 382

12.4.1 利用open函数创建文件句柄 383

12.4.2 为读、写以及更新打开文件 384

12.4.4 打开标准输入与标准输出 385

12.4.3 打开任意义件名 385

12.4.5 利用IO::File创建文件句柄 386

12.4.6 数据文件句柄 388

12.5 引用文件句柄 390

12.4.7 其他文件句柄 390

12.6.1 读行操作符 392

12.6 从文件句柄读数据 392

12.6.2 读数据操作的精细控制 395

12.6.4 读取一个字符 396

12.6.3 检测文件结束 396

12.7 向文件句柄中写数据 397

12.7.1 缓冲方式与自动刷新方式 398

12.8 处理二进制文件与文本文件 399

12.7.2 print的其他替代函数 399

12.8.2 Open编译指示 400

12.8.1 binmode函数 400

12.9.1 利用seek函数定位到文件中的某个特定位置 401

12.9 随机访问 401

12.9.2 利用Seek函数清除文件结束条件 402

12.9.3 在文件结束位置写人数据 403

12.10 截去文件与调整文件大小 404

12.9.5 面向对象的随机访问 404

12.9.4 查找当前位置 404

12.11 文件上锁 406

12.11.1 建立文件锁 407

12.12 修改缺省的输出文件句柄 409

12.11.2 文件上锁的问题与防止误解的说明 409

12.12.2 自动恢复缺省文件句柄 410

12.12.1 使用特殊变量来配置其他文件句柄 410

12.13 文件句柄的复制与别名 411

12.12.3 使用缺省变量与IO::Handle方法 411

12.14 重定向文件句柄 412

12.15 Cache多个文件句柄 414

12.16 IO::Handle方法与特殊变量 415

12.17.1 在系统级打开文件句柄 419

12.17 系统级IO 419

12.17.2 不带缓冲的读 422

12.17.3 不带缓冲的写 423

12.17.4 系统级文件定位 424

12.17.5 fcntl与ioctl 425

12.17.6 POSIX IO 429

12.18 小结 431

13.1.1 获取用户信息与组信息 432

13.1 文件与文件名 432

第13章 操作文件与目录 432

13.1.2 一元文件测试操作符 439

13.1.3 询问文件 448

13.1.4 改变文件属性 449

13.1.5 Fcntl模块 452

13.1.6 链接、断开链接与重命名文件 454

13.1.7 复制与移动文件 457

13.1.8 比较文件 459

13.1.9 查找文件 460

13.1.10 解释文件路径 465

13.1.11 文件名globbing 466

13.1.12 glob语法 467

13.1.13 临时文件 471

13.2 操作目录 475

13.2.1 读目录 476

13.2.2 创建与删除目录 480

13.2.3 目录间的转移 483

13.3 小结 485

14.1.1 命令行约定 486

14.1 解析命令行参数 486

第14章 命令行与Shell交互 486

14.1.2 @ARGV数组 487

14.1.3 利用Getopt::Std进行简单的命令行处理 493

14.1.4 利用Cetop::tong进行更为复杂的命令行处理 496

14.2 shell、shell命令与Perl 512

14.2.1 创建一个简单的 Perl shell 512

14.2.2 编写更为有用的shell 513

14.2.3 将shell集成到Perl中 516

14.2.4 在Windows系统上模拟UNIX命令 518

14.3 小结 520

15.1 与终端进行交互 521

第15章 终端输入与输出 521

15.2 从键盘读取数据 522

15.2.2 利用Term:: ReadKey控制终端输入 523

15.2.1 简单输入 523

15.2.3 整行读 528

15.2.4 利用Term:: ReadLine进行高级行输入 535

15.2.5 创建终端对象 536

15.2.6 单词自动完成 540

15.3 写屏幕 541

15.3.1 终端功能 542

15.3.2 彩色输出 545

15.4.1 Term::Screen 549

15.4 高级终端模块 549

15.4.2 Curses库 551

15.5 通过POSIX直接进行终端编程 556

15.6 小结 558

16.1 启用警告 559

第16章 警告与错误 559

16.2 启用诊断 560

16.3 产生警告与错误 562

16.4 截取警告与错误 563

16.5.1 错误编号与名称 564

16.5 译解系统调用所产生的错误结果 564

16.5.3 求值代码的错误 565

16.5.2 设置错误编号 565

16.5.4 扩展的错误消息 566

16.5.6 检查子进程与外部命令的退出状态 567

16.5.5 Errno与POSIX模块 567

16.6 将非致命错误转换成致命错误 568

16.7 利用Carp在上下文中返回警告信息与错误信息 569

16.8 错误日志与系统日志 571

16.9 高级警告 572

16.10 小结 574

17.1 语用调试支持 575

第17章 调试 575

17.2.1 一个简单的调试系统 576

17.2 自行调试的应用程序 576

17.2.2 一个更好的调试系统 577

17.2.3 创建调试日志 578

17.2.4 添加调用上下文到调试消息中 579

17.3.1 启动调试器 580

17.3 Perl调试器 580

17.3.2 输入命令 581

17.3.3 调试命令 584

17.3.4 配置调试器 594

17.3.5 跟踪与终端 599

17.3.6 通过程序进入调试器 600

17.3.7 对使用调试器异常分支 601

17.4 调试模块与信息模块 603

17.4.1 Dumpvalue模块 604

17.4.2 Safe模块 606

17.5 调试Perl解释器 609

17.6 自动测试 610

17.6.1 编写测试脚本 611

17.6.2 自动化测试 613

17.7 Profele 614

17.7.2 产生Profile报告 615

17.7.1 Profile Perl应用程序 615

17.7.3 直接收集计时信息 619

17.7.4 性能测试 621

17.8 小结 627

18.1 文本处理 628

第18章 文本处理与文档生风 628

18.1.1 使用Text::Tabs扩充和缩短制表符 629

18.1.2 使用Text::Abbrev计算缩写 630

18.1.3 使用Text::ParseWords解析单词和短语 632

18.1.4 使用Text::Wrap格式化段落 635

18.1.5 使用Text::Soundex匹配近似的发声单词 638

18.2.2 简易老式文档 641

18.2.1 注释 641

18.1.6 其他文本处理模块 641

18.2 文档化Perl 641

18.2.3 pod工具和实用程序 647

18.2.4 对pod编程 650

18.3.1 格式与格式数据类型 655

18.3 报告--在Perl中的r 655

18.3.2 格式结构 659

18.3.3 负面控制 665

18.3.4 组合报告和规则输出 668

18.4 小结 670

19.1 对象简介 672

第19章 面向对象Perl 672

19.2.2 使用对象 676

19.2.1 创建对象 676

19.2 使用对象编程 676

19.2.4 确定通过继承得到的特征 679

19.2.3 确定一个对象是什么 679

19.3.1 构造器 681

19.3 编写对象类 681

19.3.2 调试对象类 701

19.4.1 从父类继承 707

19.4 继承与派生类 707

19.4.2 编写可继承的类 709

19.4.3 私有方法 713

19.4.4 扩展与重定义对象 714

19.4.5 多继承 717

19.4.6 UNIVERSAL构造器 721

19.5 自动加载方法 726

19.6.1 私有类数据 730

19.6 保持数据私有 730

19.6.2 私有对象数据 731

19.7 销毁对象 734

19.7.1 析构器和继承 735

19.7.2 析构器与多继承 736

19.8.1 基本重载 737

19.8 重载操作符 737

19.8.3 重载比较操作符 739

19.8.2 确定操作数顺序和操作符名称 739

19.8.4 重载转换操作 740

19.8.5 回退到末重载的操作 743

19.8.7 自动生成的操作 745

19.8.6 重载与继承 745

19.9 自动化对象类开发 747

19.8.8 可重载的操作 747

19.10.1 使用被捆绑的对象 751

19.10 捆绑和被捆绑的对象 751

19.10.3 标准捆绑对象类 754

19.10.2 编写被捆绑的对象 754

19.10.4 被捆绑的对象方法 755

19.10.5 被捆绑的hash类的一个例子 758

19.10.6 使用Tie::StdHash的类的一个例子 760

19.11 小结 762

20.1.1 perl-V 764

20.1 分析Peil二进制文件--Config.pm 764

第20章 深入hd 764

20.1.2 工作原理 765

20.2.1 源文件树 767

20.2 Perl进一步分析 767

20.2.2 构建Perl 769

20.3.1 语法分析 770

20.3 Perl工作原理 770

20.3.2 编译 772

20.3.3 解释 773

20.4 内部变量类型 774

20.4.2 IV 775

20.4.1 PV 775

20.4.3 NV 776

20.4.5 使用Devel::Peek分析原始数据类型 777

20.4.4 数组与hash 777

20.5 Perl编译器 780

20.5.2 B模块 781

20.5.1 O模块 781

20.5.3 B:模块家族 783

20.5.4 编写Perl编译器后端 796

20.6 小结 799

21.1 在Perl中使用C 800

第21章 Perl与其他程序设计语言的集成 800

21.1.1 XS概述 801

21.1.2 从h2xs启动 802

21.1.3 XS文件 804

21.1.4 XS函数 806

21.1.5 TYPEMAP 811

21.1.6 Makefile 814

21.2 动态链接 815

21.2.1 使用FFI模块 816

21.2.3 使用Win32::API模块 818

21.2.2 使用C:DynaLib模块 818

21.3.1 第一步 819

21.3 在C中使用Perl 819

21.3.2 实现Perl解释器 821

21.3.3 嵌入perl代码 823

21.3.4 得到Perl值 824

21.3.5 使用Perl子例程 826

21.3.6 与Perl内核协同工作 828

21.3.7 使用模块 829

21.4 Java-Perl Lingo 831

21.5.1 PerlCOM 832

21.5 Perl与 COM 832

21.5.2 PerlCtrl 833

21.6 其他语言 834

21.7 小结 836

22.1 信号 837

第22章 创建过程与管理进程 837

22.1.1 信号处理 839

22.1.3 报警 846

22.1.2 发送信号 846

22.2 启动新进程 848

22.2.1 替换当前进程 849

22.2.3 进程、组及端口监控程序 850

22.2.2 进程ID 850

22.3.2 获得退出状态 852

22.3.1 等待一个子进程 852

22.3 处理子进程并返回退出代码 852

22.3.3 处理多个子进程 853

22.3.4 POSIX标志及函数 855

22.4.1 十分简单的解决方法 856

22.4 进程间通信 856

22.4.2 管道 857

22.4.3 打开并运行外部进程 859

22.4.4 双向管道 860

22.4.5 使用分叉的open避开shell 862

22.4.6 连接外部进程的双向管道 863

22.5 进程间共享数据 865

22.5.1 IPC::SysV 866

22.5.2 消息队列 867

22.5.3 信号量 870

22.5.4 共享内存段 873

22.6 线程 875

22.6.2 创建线程 876

22.6.1 检查线程支持 876

22.6.4 线程特定数据 877

22.6.3 标识线程 877

22.6.5 线程管理 878

22.6.7 条件变量、信号量及队列 880

22.6.6 变量锁 880

22.7 小结 890

22.6.8 线程安全与锁定代码 890

23.1.1 协议层 891

23.1 网络简介 891

第23章 Perl网络编程 891

23.1.2 网际协议 893

23.1.3 UDPWP 896

23.1.7 匿名、广播与回送地址 898

23.1.6 表示层/应用层 898

23.1.4 ICMP 898

23.1.5 其他协议 898

23.2 Perl网络编程 899

23.3 多路复用服务器 921

23.4.1 系统网络文件 928

23.4 获得网络信息 928

23.4.2 判断本地主机名 939

23.5 小结 940

24.2 新行 942

24.1 可移植的必要性 942

第24章 编写可移植Perl 942

24.3 文件与文件系统 945

24.5 系统交互 949

24.4 字节存放次序与数字宽度 949

24.6 进程间通信 950

24.8 模块 951

24.7 外部子例程 951

24.10 字符集与字符编码 952

24.9 时间及日期 952

24.14 风格 953

24.13 安全性 953

24.11 国际化 953

24.12 系统资源 953

24.15 平台 956

24.15.2 DOS及其派生系统 957

24.15.1 UNIX 957

24.15.3 Mac OS 958

24.15.4 其他Perl 959

24.16 函数实现 960

24.17 小结 964

25.3 字符和Unicode简介 965

25.2 结论 965

第25章 Unicode 965

25.1 Unicede所影响的用户群 965

25.4 Perl中的数据 968

25.5 Unicode和正则表达式 969

25.6 双向脚本 972

25.6.1 显示bidi 973

25.6.2 bidi算法做了什么 974

25.6.3 Perl和 bidi 975

25.7 Perl、118n和Unicode 976

25.7.3 创建HTML模板 977

25.7.2 安装Unicode编辑器 977

25.7.1 安装Unicode字体 977

25.7.4 处理资源文件 978

25.7.6 输出文件 979

25.7.5 运行脚本 979

25.8 小结 981

25.7.7 正在进行的工作 981

第26章 本地化和国际化 982

26.1 走向地区的原因 983

26.2 关于时间:时区 995

26.3 看上去像外语 997

26.4 葡萄牙语的词性变化 999

26.5 Lingua::*模块 1001

26.6 编写多语种网页 1005

26.7 创建自己的本地化Perl模块 1009

26.8 小结 1011

附录A 命令行选项 1012

附录B 特殊变量 1014

附录C 函数 1020

附录D 正则表达式 1036

附录E 标准语用模块 1041

附录F 标准功能模块 1043

附录G Perl资源 1050

附录H 与本书相关的网站:p2p.wrox.com 1052