Perl高级编程
2002-6
机械工业出版社
(英)Peter Wainwright等
1057
无
本书深入浅出地介绍了利用Perl语言进行编程的各方面知识。首先,本书介绍了大多数高级程序设计语言中都涉及的数据类型、特殊变量、操作符、表达式、语句和子例程等基本概念。然后,本书逐章阐述了文件与目录处理、终端输入与输出、程序调试方法等。最后,本书还描述了面向对象程序设计方法、Perl解释器、进程、线程、基本的网络编程方法、Perl语言的可移植性以及国际化等高级话题。 本书思路清晰,逻辑性强,方法实用性强,是进入Perl编程世界的理想向导和指南。无论是Perl入门者,还是有经验的Perl程序员,都可得益于本书提供的丰富的Perl编程知识与编程技巧。
第1章 概览
1.l 简介
1.1.l 关键的特性
1.1.2 支持平台
l.l.3 Perl的历史和版本
l. 1.4 基础信息
1. 2 构建和安装Perl
1.2. 1 安装预构建的Perl发布版本
1.2. 2 构建Perl源代码
1.2. 3 构建和安装模块
1.2.4 用CPAN模块安装模块
1.3 运行Perl
1.3.l 启动Perl应用程序
1.3.2 命令行
1.3.3 命令行语法
1.3.4 Perl环境
1.4 小结
第2章 基本概念
2.l 值和变量
2.2 空白区域
2.3 数据类型
2.4 特殊变量
2.5 插值
2.6 上下文
2.6.l 标量上下文和列表上下文
2. 6.2 空白上下文
2.7 操作符
2.8 程序块
2.9 控制结构
2.10 循环修饰符
2.11 子例程
2.12 函数
2.13 作用域
第3章 标量
3.1 值转换和高速缓存
3.2 数字
3.2. 1 整数
3.2.2 浮点数
3.2.3 use integer编译指示
3.2.4 数学函数
3.3 字符串
3.3.1 引号和引用
3.3.2 here文档
3.3.3 探词字符串和版本号
3.3.4 把字符串转换成数字
3.3.5 把字符串转换成列表和hash
3. 3.6 操作字符串的函数
3.3.7 字符串格式化
3.4 小结
第4章 操作符
4.l 操作符与函数比较
4.2 操作符类型和类别
4.2. 1 赋值操作符
4.2.2 算术操作符
4.2. 3 移位操作符
4.2.4 字符串操作符和列表操作符
4.2.5 逻辑操作符
4.2.6 位操作符
4.2.7 组合赋值操作符
4.2.8 递增操作符和递减操作符
4. 2.9 比较操作符
4.2.10 正则表达式绑定操作符
4.2.11 逗号操作符和关系操作符
4.2.12 引用操作符和间接引用操作符
4. 2.13 箭头操作符
4.2.14 范围操作符
4. 2.15 三元操作符
4.3 优先组和结合性
4. 4 禁用函数和操作符
4. 5 覆盖操作符
4. 6 小结
第5章 标量之外的更多数据类型
5.l 列表和数组
5. 1.1 操作数组
5.1.2 把列表和数组转换为标量
5. 2 hash
5.2.l 操作 hash
5.2.2 把列表和数组转换为hash
5.2.3 把hash转换为标量
5. 2.4 把hash转换为数组
5.2.5 特殊的hash变量% ENV
5.3 引用
5. 4 复杂的数据结构
5.4.l 嵌套带来的问题--列表被展开
5.4.2 列表的列表和多维数组
5.4.3 hash的hash和其他复杂的数据结构
5. 4.4 向复杂的数据结构添加元素和修改复杂的数据结构
5.4.5 编程实现复杂的数据结构
5.4.6 遍历复杂的数据结构
5.5 typeglob
5.5. 1 定义typeglob
5.5.2 操作typeglob
5.5.3 访问typeglob
5.6 未定义值
5.6.l 存在测试
5.6.2 使用未定义值
5.6.3 把undef作为一个函数使用
5.7 常量
5.7.l 使用constant编译指示声明标量常量
5. 7.2 声明列表常量和hash常量
5.7.3 常量引用
5.7.4 列举和检查常量的存在
5. 8 小结
第6章 结构、流和控制
6.l 表达式、语句和程序块
6.1.l 声明
6.l. 2 表达式和简单语句
6.1.3 程序块和复合语句
6.2 条件语句
6.2. 1 真值的概念
6.2.2 if、else和elsif
6.2.3 unless
6.2. 4 使用逻辑操作符写条件
6.2. 5 三元操作符
6.2.6 开关和多分支条件
6.2.7 从多分支条件中返回值
6.3 循环和循环过程
6.3.l 使用for编写C样式的循环
6.3.2 使用foreach写出更好的循环
6.3.3 条件循环--while、until和do
6.3.4 控制循环执行
6.3.5 goto语句
6.3.6 map和grep
6.4 小结
第7章 子例程
7.1 声明子例程和调用子例程
7.1.l 匿名子例程和子例程引用
7.1.2 严格子例程和use strict subs编译指示
7.l.3 预声明子倒程
7. 1.4 子例程栈
7.1.5 检查子例程和使Perl自动定义子例程
7.2 传递参数
7.2.l 传递列表和hash
7.2.2 把标量子例程转换为列表处理程序
7.2.3 直接把@_传递给子例程
7.2.4 命名参数
7.3 原型
7.3.l 定义参数的个数和它们的作用域
7.3.2 使用原型设计代码引用
7.3.3 把子例程作为标量操作符
7.3.4 请求变量而不是值
7. 3. 5 可选参数
7.3.6 禁用原型
7.4 从子倒程中返回值
7. 4.l 返回未定又值
7.4.2 对调用上下文的检测和响应
7.4. 3 闭包
7.4.4 可赋值的子例程
7.5 属性列表
7.5.l 定义于例程属性
7.5.2 访问属性
7.5.3 特殊属性
7.5. 4 包属性
7.6 小结
第8章 作用域和可见性
8.l 包变量
8.1.l 定义包变量
8.1.2 使用"严格的"变量
8.1.3 声明全局包变量
8.l.4 使用use vars声明全局包变量
8.1.5 使用our词法声明全局包变量
8.1.6 在Perl中自动局部化
8.1.7 使用local局部化包变量
8.2 词法变量
8.2. 1 声明词法变量
8. 2. 2 在词法变量作用域外使用它们
8.3 符号表
8.3.l main包
8.3. 2 typeglob和main包
8.3.3 符号表层次
8.3.4 直接操作符号表
8.3.5 访问符号表
8.4 小结
第9章 使用模块
9. l 模块和包
9.2 使用do、require和use装载代码
9.2. 1 导入列表
9.2.2 禁止缺省导入
9. 2. 3 使用no禁用特性
9.2.4 测试模块版本和Perl的版本
9.3 语用模块
9.3.l 语用模块的工作原理
9.3.2 语用模块的作用域
9.4 特殊hash变量% INC
9.5 特殊数组变量@ INC
9.5.l 直接修改@ INC
9.5.2 使用lib编译指示修改@ INC
9.6 定位与脚本相关的库
9.7 检查一个模块的可用性
9. 8 找出被安装的模块
9.9 将模块的载人推迟至使用时
9.10 小结
第10章 模块与包内幕
10.1 BEGIN块、END块和其他程序块
10.1.1 BEGN块
10.l.2 END块
10.1.3 CHECK和 INIT
10.2 操作包
10.2. 1 删除包
10.2.2 禁止包变量
10.3 按程序方式查找包名
10.4 自动加载
10.4. 1 自动加载于例程
10.4.2 自行定义而不是自动加载子例程
10.4.3 自动加载模块
10.5 导入与导出
10.5.l 导入机制
10.5.2 导出
10.6 创建可安装的模块
10.6.1 编写良好的模块
10.6.2 创建一个工作目录
10.6.3 建立可安装的包
10.6.4 添加一个测试脚本
10.6.5 将模块上载到CPAN
10.7 小结
第11章 正则表达式
11.l 字符串插值
11.1.1 Perl的插值语法
11.1.2 插入元字符和字符代码
11.1.3 对变量进行插值
11.1.4 插值代码
11.1.5 插值上下文
11.1.6 正则表达式中的插值
11.1.7 在字符串变量中插人文本
11.1.8 保护字符串防止被插值
11.2 正则表达式
11.2.l 正则表达式出现在什么位置
11.2.2 正则表达式分隔符
11.2.3 正则表达式的元素
11.2.4 更高级的模式
11.2. 5 模式匹配修饰符
11.2.6 正则表达式与通配符
11.2.7 元字符
11.2.8 提取匹配的文本
11.2. 9 不止一次匹配
11.2.10 扩展模式
11.2.11 文档化正则表达式
11.2.12 书写有效的正则表达式
11.2.13 检查正则表达式的有效性
11.2.14 正则表达式、感染变量和调试
11.2.15 置换
11.2.16 音译
11. 3 小结
第12章 利用文件句柄进行输入与输出
12.1 10与文件句柄
12.2 文件句柄数据类型
12.3 标准文件句柄
12.4 创建文件句柄
12.4.l 利用open函数创建文件句柄
12.4.2 为读、写以及更新打开文件
12.4.3 打开任意义件名
12.4. 4 打开标准输入与标准输出
12.4.5 利用IO::File创建文件句柄
12.4. 6 数据文件句柄
12.4.7 其他文件句柄
12.5 引用文件句柄
12.6 从文件句柄读数据
12.6.l 读行操作符
12.6.2 读数据操作的精细控制
12.6.3 检测文件结束
12.6.4 读取一个字符
12. 7 向文件句柄中写数据
12. 7.l 缓冲方式与自动刷新方式
12.7.2 print的其他替代函数
12.8 处理二进制文件与文本文件
12.8. l binmode函数
12.8.2 Open编译指示
12.9 随机访问
12.9.l 利用seek函数定位到文件中的某个特定位置
12.9.2 利用Seek函数清除文件结束条件
12.9.3 在文件结束位置写人数据
12.9.4 查找当前位置
12.9.5 面向对象的随机访问
12.10 截去文件与调整文件大小
12.11 文件上锁
12.11.l 建立文件锁
12.l1.2 文件上锁的问题与防止误解的说明
12.12 修改缺省的输出文件句柄
12.12.l 使用特殊变量来配置其他文件句桶
12.12.2 自动恢复缺省文件句柄
12.12. 3 使用缺省变量与IO::Handle方法
12.13 文件句柄的复制与别名
12.14 重定向文件句柄
12.15 Cache多个文件句柄
12.16 IO::Handle方法与特殊变量
12.17 系统级IO
12.17.l 在系统级打开文件句柄
12.17.2 不带缓冲的读
12.17.3 不带缓冲的写
12. 17.4 系统级文件定位
12.17.5 fcntl与ioctl
12.17.6 POSIX IO
12. 18 小给
第13章 操作文件与目录
13.l 文件与文件名
13.1.l 获取用户信息与组信息
13.1.2 一元文件测试操作符
13.1.3 询问文件
13.l.4 改变文件属性
13.1.5 Fcntl模块
13.1.6 链接、断开链接与重命名文件
13.1.7 复制与移动文件
13.1.8 比较文件
13.1.9 查找文件
13.1.10 解释文件路径
13.1.11 文件名globbing
13. 1.12 glob语法
13. 1.13 临时文件
13.2 操作目录
13. 2.1 读目录
13.2. 2 创建与删除目录
13.2.3 目录间的转移
13. 3 小结
第14章 命令行与Shell交互
14. 1 解析命令行参数
14.1.l 命令行约定
14.1.2 @ARGV数组
14.1.3 利用Getopt::Std进行简单的命令行处理
14.l. 4 利用Cetop::tong进行更为复杂的命令行处理
14.2 shell、shell命令与Perl
14.2. 1 创建一个简单的 Perl shell
14. 2. 2 编写更为有用的shell
14.2. 3 将shell集成到Perl中
14.2. 4 在Windows系统上模拟UNIX命令
14.3 小结
第15章 终端输入与输出
15.l 与终端进行交互
15.2 从键盘读取数据
15.2. l 简单输入
15. 2.2 利用Term:: ReadKey控制终端输入
15.2.3 整行读
15.2.4 利用Term:: ReadLine进行高级行输入
15.2.5 创建终端对象
15.2.6 单词自动完成
15.3 写屏幕
15.3.1 终端功能
15.3.2 彩色输出
15. 4 高级终端模块
15. 4.1 Term::Screen
15.4.2 Curses库
15.5 通过POSIX直接进行终端编程
15.6 小结
第16章 警告与错误
16.1 启用警告
16.2 启用诊断
16.3 产生警告与错误
16.4 截取警告与错误
16.5 译解系统调用所产生的错误结果
16.5.l 错误编号与名称
16.5.2 设置错误编号
16.5.3 求值代码的错误
16.5. 4 扩展的错误消息
16.5.5 Errno与POSIX模块
16.5. 6 检查子进程与外部命令的退出状态
16.6 将非致命错误转换成致命错误
16.7 利用Carp在上下文中返回警告信息与错误信息
16.8 错误日志与系统日志
16.9 高级警告
16.10 小结
第17章 调试
17.1 语用调试支持
17.2 自行调试的应用程序
17.2.l 一个简单的调试系统
17.2.2 一个更好的调试系统
17.2.3 创建调试日志
17.2.4 添加调用上下文到调试消息中
17. 3 Perl调试器
17. 3. 1 启动调试器
17.3.2 输入命令
17.3.3 调试命令
17.3.4 配置调试器
17.3.5 跟踪与终端
17.3.6 通过程序进入调试器
17.3 对使用调试器并常分支
17.4 调试模块与信息模块
17.4.1 Dumpvalue模块
17. 4. 2 Safe模块
17.5 调试Perl解释器
17.6 自动测试
17.6.l 编写测试脚本
17.6. 2 自动化测试
17.7 Profele
17.7. 1 Profile Perl应用程序
17.7.2 产生Profile报告
17.7.3 直接收集计时信息
17.7.4 性能测试
17.8 小结
第18章 文本处理与文档生风
18.l 文本处理
18.1.l 使用Text::Tabs扩充和缩短制表符
18.1.2 使用Text::Abbrev计算缩写
18.1.3 使用Text::ParseWords解析单词和短语
18.1.4 使用Text::Wrap格式化段落
18.1.5 使用Text::Soundex匹配近似的发声单词
18.1. 6 其他文本处理模块
18.2 文档化Perl
18.2.l 注释
18.2.2 简易老式文档
18.2.3 pod工具和实用程序
18. 2.4 对pod编程
18.3 报告--在Perl中的r
18.3.1 格式与格式数据类型
18.3.2 格式结构
18.3. 3 负面控制
18.3.4 组合报告和规则输出
18.4 小结
第19章 面向对象Perl
19.l 对象简介
19.2 使用对象编程
19. 2. 1 创建对象
19.2.2 使用对象
19. 2.3 确定一个对象是什么
19.2.4 确定通过继承得到的特征
19.3 编写对象类
19.3.l 构造器
19.3.2 调试对象类
19.4 继承与派生类
19.4.1 从父类继承
19.4.2 编写可继承的类
19.4.3 私有方法
19.4.4 扩展与重定义对象
19.4.5 多继承
19.4.6 UNIVERSAL构造器
19.5 自动加载方法
19.6 保持数据私有
19. 6.l 私有类数据
19.6.2 私有对象数据
19.7 销毁对象
19.7.l 析构器和继承
19.7. 2 析构器与多继承
19.8 重载操作符
19.8.1 基本重载
19.8.2 确定操作数顺序和操作符名称
19.8.3 重载比较操作符
19.8.4 重载转换操作
19.8.5 回退到本重载的操作
19.8.6 重载与继承
19.8.7 自动生成的操作
19.8.8 可重载的操作
19.9 自动化对象类开发
19.10 捆绑和被捆绑的对象
19.10.l 使用被捆绑的对象
19.10.2 编写被捆绑的对象
19.10.3 标准捆绑对象类
19.10.4 被捆绑的对象方法
19.10.5 被捆绑的hash类的一个例子
19.10.6 使用Tie::stdHash的类
的一个例子
19.11 小结
第20章 深入hd
20.l 分析Peil二进制文件--Config.pm
20.1.l perl-V
20.l.2 工作原理
20.2 Perl进一步分析
20. 2.l 源文件树
20.2. 2 构建Perl
20.3 Perl工作原理
20.3.1 语法分析
20.3.2 编译
20.3.3 解释
20.4 内部变量类型
20.4.1 PV
20.4.2 IV
20.4.3 NV
20.4.4 数组与hash
20.4.5 使用Devel::Peek分析原始数据类型
20.5 Perl编译器
20.5.1 O模块
20.5.2 B模块
20.5.3 B:模块家族
20.5.4 编写Perl编译器后端
20.6 小结
第21章 Perl与其他程序设计语言的集成
21.l 在Perl中使用C
21.1.1 XS概述
21.1.2 从h2xs启动
21.1.3 XS文件
21.1.4 XS函数
21.1.5 TYPEMAP
21.1.6 Makefile
21.2 动态链接
21.2.l 使用FFI模块
21.2.2 使用C:DynaLib模块
21.2.3 使用Win32::API模块
21.3 在C中使用Perl
21.3.l 第一步
21.3.2 实现Perl解释器
21.3.3 嵌入perl代码
21.3.4 得到Perl值
21.3.5 使用Perl子例程
21.3.6 与Perl内核协同工作
21.3.7 使用模块
21.4 Java-Perl Lingo
21.5 Perl与 COM
21.5.1 PerlCOM
21.5.2 PerlCtrl
21.6 其他语言
21.7 小结
第22章 创建过程与管理进程
22. 1 信号
22.l.l 信号处理
22.l.2 发送信号
22.1.3 报警
22.2 启动新进程
22.2.l 替换当前进程
22.2.2 进程ID
22.2.3 进程、组及喘口监控程序
22.3 处理子进程并返回退出代码
22.3.l 等待一个子进程
22.3.2 获得退出状态
22.3.3 处理多个子进程
22.3.4 POSIX标志及函数
22.4 进程间通信
22.4.l 十分简单的解决方法
22.4. 2 管道
22.4.3 打开并运行外部进程
22.4.4 双向管道
22.4.5 使用分叉的open避开shell
22.4.6 连接外部进程的双向管道
22.5 进程间共享数据
22.5.l IPC::SysV
22.5.2 消息队列
22.5.3 信号量
22.5. 4 共享内存段
22. 6 线程
22.6.l 检查线程支持
22.6.2 创建线程
22.6.3 标识线程
22.6.4 线程特定数据
22.6.5 线程管理
22. 6. 6 变量锁
22.6.7 条件变量、信号量及队列
22.6.8 线程安全与锁定代码
22.7 小结
第23章 Perl网络编程
23.l 网络简介
23.1.l 协议层
23.1.2 网际协议
23.1.3 UDPWP
23.1.4 ICMP
23.1.5 其他协议
23.1.6 表示层/应用层
23.1.7 匿名、广播与回送地址
23.2 Perl网络编程
23.3 多路复用服务器
23.4 获得网络信息
23. 4. l 系统网络文件
23.4.2 判断本地主机名
23.5 小结
第24章 编写可移植Perl
24.l 可移植的必要性
24.2 新行
24. 3 文件与文件系统
24.4 字节存放次序与数字宽度
24. 5 系统交互
24. 6 进程间通信
24. 7 外部子例程
24. 8 模块
24. 9 时间及日期
24.10 字符集与字符编码
24. 11 国际化
24. 12 系统资源
24.13 安全性
24.14 风格
24.15 平台
24.15.1 UNIX
24.15.2 DOS及其派生系统
24.15.3 Mac OS
24.15.4 其他Perl
24.16 函数实现
24.17 小结
第25章 Unicode
25.1 Unicede所影响的用户群
25.2 结论
25.3 字符和Unicode简介
25.4 Perl中的数据
25.5 Unicode和正则表达式
25.6 双向脚本
25.6.l 显示bidi
25. 6.2 bidi出算法做了什么
25.6.3 Perl和 bidi
25.7 Perl、118n和Unicode
25.7.l 安装Unicode字体
25. 7.2 安装Unicode编辑器
25. 7.3 创建HTML模板
25.7.4 处理资源文件
25.7.5 运行脚本
25.7.6 输出文件
25.7.7 正在进行的工作
25.8 小结
第26章 本地化和国际化
26.1 走向地区的原因
26.2 关于时间:时区
26.3 看上去像外语
26.4 葡萄牙语的词性变化
26.5 Lingua::*模块
26. 6 编写多语种网页
26.7 创建自己的本地化Perl模块
26. 8 小结
附录A 命令行选项
附录B 特殊变量
附录C 函数
附录D 正则表达式
附录E 标准语用模块
附录F 标准功能模块
附录G Perl资源
附录H 与本书相关的网站:
p2p.wrox.com
无