第1部分 Perl编程基础
第1章 Perl的背景
1.1 版本和命名协定
1.1.1 Perl、perl还是PeRL
1.1.2 Perl 5.6之前的各种Perl版本
1.2 Perl的历史
1.3 Perl的主要特点
1.3.1 免费
1.3.2 简单易学、简明易读
1.3.3 快速高效
1.3.4 可扩展性
1.3.5 灵活的数据类型
1.3.6 面向对象
1.3.7 交流协作
1.4 编译器或解释器
1.5 与Perl类似的语言
1.5.1 UNIX Shell
1.5.2 Tcl
1.5.3 Python
1.5.4 Java
1.5.5 C/C++
1.5.6 awk/gawk
1.6 关于Perl的误区
1.7 Perl的成功业绩
第2章 Perl概述
2.1 安装及使用Perl
2.1.1 编写一个Perl脚本
2.1.2 UNIX下的Perl
2.1.3 Windows下的Perl
2.1.4 Mac OS下的Perl
2.2 Perl中的组件
2.2.1 变量
2.2.2 操作符
2.2.3 语句
2.2.4 子程序(函数)
2.2.5 模块
2.3 接下去如何使用本书
第3章 Perl解析规则
3.1 脚本执行过程
3.2 语法和解析规则
3.2.1 基本语法
3.2.2 注释语句
3.2.3 组件确认
3.2.4 操作符和优先级
3.2.5 独立词
3.2.6 上下文
3.2.7 逻辑值
3.3 Perl的代码体系
第4章 变量和数据
4.1 基本命名规则
4.2 标量变量
4.3 字面量
4.3.1 数字字面量
4.3.2 字符串字面量
4.3.3 字符串引用
4.3.4 数组的内插
4.3.5 本地文档
4.3.6 V-字符串
4.4 数组
4.5 哈希结构
4.6 列表
4.7 类型标识(Typeglobs)
4.8 被定义的函数和未定义值
4.9 默认值
4.10 其他标记
4.11 特殊变量
第5章 语句和控制结构
5.1 代码块
5.2 条件语句
5.3 循环语句
5.3.1 while循环
5.3.2 until循环
5.3.3 for循环
5.3.4 foreach循环
5.3.5 continue块
5.3.6 标签
5.3.7 循环控制
5.3.8 非限定块
5.3.9 goto语句
第6章 子程序、包和模块
6.1 函数
6.1.1 参数
6.1.2 返回值
6.1.3 错误通告
6.1.4 上下文
6.1.5 属性
6.1.6 原型
6.2 包
6.2.1 包符号表
6.3 特殊块
6.4 模块
6.4.1 建立模块
6.4.2 Exporter模块
6.4.3 use和require的比较
6.4.4 no语句
6.4.5 do语句
6.5 作用域
6.5.1 “my”的效果
6.5.2 “local”的效果
6.5.3 “our”的效果
6.5.4 循环中的作用域
6.6 自动装载
第7章 文件操作
7.1 文件句柄
7.1.1 打开和关闭文件
7.1.2 输入/输出句柄
7.1.3 文件定位
7.1.4 混合控制函数
7.2 文件管理
7.2.1 文件信息
7.2.2 基本的文件管理
7.2.3 目录访问
7.2.4 管理目录
7.2.5 使用fcntl函数进行文件的控制
7.2.6 通过ioctl函数进行I/O控制
7.2.7 select函数
7.2.8 文件加锁
第8章 数据操作
8.1 数字处理
8.1.1 abs—绝对值
8.1.2 int—将浮点数转换为整数
8.1.3 exp—e为底的乘方
8.1.4 sqrt—开方运算
8.1.5 log—对数函数
8.1.6 三角函数
8.1.7 进制转换
8.1.8 字符和数字之间的转换
8.1.9 随机数
8.1.10 小整数的操作
8.2 字符串操作
8.2.1 字符串连接
8.2.2 字符串长度
8.2.3 改变字符大小写
8.2.4 行结束字符的消除
8.2.5 字符串定位
8.2.6 提取子串
8.2.7 栈
8.2.8 数组切片
8.2.9 join函数
8.2.10 split函数
8.2.11 grep函数
8.2.12 map函数
8.2.13 sort函数
8.2.14 reverse
8.3 正则表达式
8.3.1 模式修饰符
8.3.2 匹配操作符
8.3.3 替换操作符
8.3.4 转换
8.3.5 正则表达式的元素
8.3.6 正则表达式变量
8.3.7 正则表达式扩展名/断言
8.3.8 预编译表达式
8.3.9 正则表达式的支持函数
8.4 Unicode
8.4.1 Perl对于Unicode的解释
8.4.2 Perl中的Unicode字符
8.4.3 Unicode作用于Perl的效果
第9章 错误和捕获错误
9.1 在脚本中加入错误确认的代码
9.1.1 错误确认方法
9.1.2 错误确认方针
9.2 什么是要确认的错误
9.3 什么是不需要确认的错误
9.4 什么时候停止确认
9.4.1 尽量避免画蛇添足
9.4.2 函数、返回值和内嵌结构
9.5 表示错误的信息和数字
9.6 在脚本中报告错误
9.6.1 Warn函数
9.6.2 Die函数
9.6.3 指示和标记
9.7 在模块中进行报错
9.7.1 Carp函数
9.7.2 Cluck函数
9.7.3 Croak函数
9.7.4 Confess函数
第2部分 使用Perl编程
第10章 复杂数据结构
10.1 访问打包的数据结构
10.2 引用
10.2.1 建立硬引用
10.2.2 反引用
10.2.3 判断引用中的数据类型
10.2.4 软引用
10.3 复杂结构
10.3.1 二维数组
10.3.2 二维哈希结构
10.3.3 哈希结构的数组
10.3.4 数组的哈希结构
10.3.5 多于二维的结构
10.4 对象
10.4.1 关于对象的基础知识
10.4.2 建立和使用对象
10.4.3 对象方法
10.4.4 类和类的继承
10.4.5 析构函数和垃圾收集
10.4.6 Perl中对象结构同其他语言的比较
10.5 使用捆绑
10.5.1 建立新的捆绑类
第11章 系统信息
11.1 用户和用户组
11.1.1 获取UNIX的Password
11.1.2 获得UNIX的用户组
11.1.3 Password加密
11.2 Time
11.2.1 gmtime和localtime
11.2.2 Time函数
11.2.3 时间值比较
11.2.4 将日期和时间转换为起始时间值
11.2.5 时间算法
11.2.6 times函数
11.2.7 sleep函数
11.2.8 Alarms
11.3 环境变量
第12章 网络
12.1 获得网络信息
12.1.1 主机
12.1.2 协议
12.1.3 服务
12.1.4 网络
12.2 套接字模块
12.2.1 地址解析和转换
12.2.2 地址常量
12.2.3 套接字结构
12.2.4 行结束常量
12.3 利用套接字进行通信
12.3.1 连接远端套接字
12.3.2 监听套接字连接信息
12.4 使用IO::Socket
12.4.1 客户端
12.4.2 服务器端
12.4.3 使用IO::Socket和IO::Select
12.4.4 获取套接字地址
12.4.5 关闭套接字
12.4.6 套接字选项
12.4.7 数据传递
12.5 Graham Barr的libnet包族
12.6 Gisle Aas的LWP包族
第13章 数据库系统
13.1 文本数据库
13.1.1 限定数据库
13.1.2 固定长度的记录
13.2 DBM数据库
13.2.1 DBM的实现
13.2.2 DBM函数
13.2.3 使用捆绑DBM数据库
13.2.4 在DBM各种格式之间转换
13.2.5 使用AnyDBM_File
13.2.6 GDBM的特性
13.2.7 Berkeley DB特性
13.2.8 在DBM数据库中存放复杂的数据
13.2.9 DBM中的关系型数据库
13.3 数据库的文件锁定
13.4 使用DBI和Win32::ODBC 工具集
13.4.1 DBI
13.4.2 Win32::ODBC
13.4.3 数据库机制和兼容
13.4.4 数据库连接
13.4.5 执行简单查询
13.4.6 执行扩展查询
13.4.7 关闭数据库连接
13.4.8 确认错误
13.5 复习SQL语言
13.5.1 SQL语句
第14章 进程间通信
14.1 进程
14.1.1 控制Perl运行
14.1.2 进程信息
14.1.3 进程组
14.1.4 进程优先级
14.2 信号
14.2.1 信号句柄
14.2.2 _WARN_和_DIE_信号
14.2.3 发送信号
14.3 管道
14.3.1 匿名管道
14.3.2 双向通信
14.3.3 命名管道
14.3.4 Windows下的命名管道
14.3.5 安全管道
14.4 执行附加进程
14.4.1 运行其他程序
14.4.2 替换当前脚本
14.4.3 建立子进程
14.5 其他的函数调用
14.6 system V IPC
第15章 其他运行方法
15.1 以命令行形式执行Perl
15.1.1 特殊操作
15.2 Perl的环境变量
15.3 Perl in Perl(eval)
15.3.1 使用eval EXPR
15.3.2 使用eval BLOCK
15.3.3 捕捉意外情况
15.3.4 返回信息
15.3.5 eval和_DIE_信号句柄
15.4 线程
15.4.1 多任务如何实现
15.4.2 从多任务到多线程
15.4.3 线程和多进程的比较
15.4.4 线程和select()函数的区别
15.4.5 线程和Perl
15.4.6 创建一个新线程
15.4.7 通过匿名者函数建立线程
15.4.8 线程控制
15.4.9 变量控制
15.4.10 队列
15.4.11 标志(semaphore)
15.4.12 信号
15.5 安全性
15.5.1 使用 Taint 模式
15.5.2 safe模块和opcode模块
第3部分 开发应用
第16章 用户界面工具
16.1 处理命令行参数
16.1.1 Getopt::std
16.1.2 Getopt::Long
16.2 Perl输出显示机制
16.2.1 标题和脚注
16.2.2 格式函数
16.2.3 格式变量
第17章 高级用户界面
17.1 终端中的一些处理
17.2 使用TK
17.2.1 在UNIX下安装TK
17.2.2 在Windows下安装TK
17.2.3 接触TK
17.2.4 事件循环
17.2.5 部件
17.2.6 控制窗口位置大小
17.2.7 简化处理
第18章 Web中的Perl
18.1 HTML
18.2 统一资源定位符URL
18.3 Web操作浏览
18.4 环境
18.5 通用网关接口(CGI)
18.5.1 数据提取
18.5.2 返回相关的数据到用户浏览器中
18.5.3 文档主体
18.6 Web编程
18.7 CGI模块
18.7.1 cookies
18.8 解析HTML
18.9 解析XML
18.10 调试程序
18.11 安全性
第19章 通过标记控制Perl的执行
19.1 告警
19.2 $^W变量
19.3 以前Perl版本中的warnings标记
19.4 Perl5.6中的词法告警
19.5 strict标记
19.5.1 vars选项
19.5.2 refs选项
19.5.3 subs选项
19.6 其他Perl标记
19.6.1 attributes标记
19.6.2 autouse标记
19.6.3 base标记
19.6.4 blib标记
19.6.5 bytes标记
19.6.6 charnames标记
19.6.7 constant标记
19.6.8 diagnostics标记
19.6.9 field标记
19.6.10 integer
19.6.11 less
19.6.12 lib
19.6.13 locale
19.6.14 open
19.6.15 ops
19.6.16 overload
19.6.17 re
19.6.18 sigtrap
19.6.19 subs
19.6.20 vars
第20章 扩展和嵌入Perl
20.1 Perl的内核
20.1.1 Perl体系结构
20.1.2 内部对象
20.1.3 翻译器
20.1.4 操作码
20.1.5 编译
20.1.6 执行
20.2 Perl的内部结构
20.2.1 变量
20.2.2 栈
20.2.3 栈的大小
20.2.4 Perl内核的归纳
20.3 Perl的扩展编程
20.3.1 Perl的扩展接口
20.3.2 XS简介
20.3.3 SWIG简介
20.3.4 使用XS
20.4 在其他语言中使用Perl
20.4.1 内嵌Perl解释器
20.4.2 使用特定的函数
20.4.3 多个实例
20.4.4 XS初始化过程
20.5 同其他语言配合使用
20.5.1 将其他语言转换成Perl
20.5.2 将Perl转换成其他语言
20.5.3 在Perl中调用其他语言
第21章 调试程序和优化代码
21.1 调试技术
21.1.1 使用Print语句
21.1.2 使用caller
21.1.3 使用eval函数
21.1.4 编写日志
21.1.5 向syslog报告调试信息
21.1.6 向Windows NT/2000事件日志报告调试信息
21.2 使用调试器
21.2.1 watches监控
21.2.2 步进
21.2.3 断点
21.2.4 Perl 调试器
21.2.5 ActivePerl调试器
21.3 Perl和其他语言的差别
21.3.1 Perl和awk/gawk的差别
21.3.2 Perl和C之间容易混淆的地方
21.3.3 Perl和sed之间容易混淆的地方
21.3.4 Perl和emacs之间容易混淆的地方
21.3.5 Shell和Perl之间容易混淆的地方
21.3.6 Perl和python之间容易混淆的地方
21.4 代码优化
21.4.1 Perl Profiler
21.4.2 手工Profiling
21.4.3 优化代码时要注意的地方
第22章 Perl编译器
22.1 使用转储功能
22.2 使用Perl编译器
22.2.1 后端
22.2.2 perlcc前端
22.2.3 解释代码和编译代码之间的区别
22.3 速度比较
22.3.1 测试
22.3.2 概括结果
第23章 Perl的文档
23.1 使用Perl提供的文档
23.1.1 UNIX
23.1.2 Windows
23.1.3 Mac OS/Mac OS X
23.2 编写POD文档
23.2.1 POD组件
23.2.2 命令段落
23.2.3 一般文本段落
23.2.4 Verbatim段落
23.2.5 转义序列
23.2.6 嵌入文档
23.3 将POD转换成其他格式
23.3.1 文本(TEXT)
23.3.2 HTML
23.3.3 man page
23.3.4 PostScript/PDF
23.3.5 通过自己编写的脚本将POD转换成HTML
第24章 Perl中跨平台使用的问题
24.1 函数支持
24.2 常量的跨平台兼容
24.3 执行环境
24.4 错误报告
24.5 行结束符
24.6 字符集
24.7 数据差别
24.8 文件和文件路径
24.9 模块
24.10 性能和资源
24.11 跨系统使用Perl的一些技巧
24.11.1 判断当前的操作系统
24.11.2 判断Perl版本
24.11.3 检验所支持的函数
24.11.4 函数重载
第25章 发布模块和应用程序
25.1 Perl Makefile和Extutils::MakeMaker
25.1.1 Perl Makefiles和CPAN
25.1.2 Perl Makefiles和PPM
25.1.3 扩展程序建立和安装概述
25.1.4 MakeMaker概述
25.1.5 h2xs工具
25.1.6 MakeMaker配置选项
25.1.7 创建一个伪程序描述文件
25.1.8 默认的程序描述文件目标
25.1.9 创建一个新的Perl二进制可执行文件
25.1.10 Package Builder的目标
25.2 MakeMaker的一些技巧
25.2.1 确定先决条件
25.3 向CPAN提供打包的模块
25.4 向PPM/VPM提供打包的模块
附录A 参考函数
附录B 标准Perl库
附录C 资源