本书是一本关于Perl语言的参考大全,涵盖了Perl语言的各个方面,包括Perl编程的基础知识、使用Perl进行编程、开发应用程序、Perl的高级技巧,附录提供了函数参考、Perl标准库和网上资源特定等内容。书中提供了许多实用的例程,并且给出了一些用Perl解决实际问题的建议。
本书并不是为任何特定的Perl用户组而写的,作为一本参考书,无论对于初学者,还是专业用户,这本书都是非常有价值的。
第1部分 Perl编程基础\r\n\r\n第1章 Perl的背景 \r\n\r\n1.1 版本和命名协定 \r\n1.1.1 Perl、perl还是PeRL \r\n1.1.2 Perl 5.6之前的各种Perl版本 \r\n1.2 Perl的历史 \r\n1.3 Perl的主要特点 \r\n1.3.1 免费\r\n1.3.2 简单易学、简明易读 \r\n1.3.3 快速高效 \r\n1.3.4 可扩展性 \r\n1.3.5 灵活的数据类型 \r\n1.3.6 面向对象 \r\n1.3.7 交流协作 \r\n1.4 编译器或解释器 \r\n1.5 与Perl类似的语言\r\n1.5.1 UNIX Shell \r\n1.5.2 Tcl \r\n1.5.3 Python \r\n1.5.4 Java \r\n1.5.5 C/C++\r\n1.5.6 awk/gawk \r\n1.6 关于Perl的误区 \r\n1.7 Perl的成功业绩 \r\n\r\n第2章 Perl概述 \r\n\r\n2.1 安装及使用Perl \r\n2.1.1 编写一个Perl脚本 \r\n2.1.2 UNIX下的Perl \r\n2.1.3 Windows下的Perl \r\n2.1.4 Mac OS下的Perl \r\n2.2 Perl中的组件 \r\n2.2.1 变量 \r\n2.2.2 操作符\r\n2.2.3 语句 \r\n2.2.4 子程序(函数) \r\n2.2.5 模块 \r\n2.3 接下去如何使用本书 \r\n\r\n第3章 Perl解析规则 \r\n\r\n3.1 脚本执行过程 \r\n3.2 语法和解析规则\r\n3.2.1 基本语法 \r\n3.2.2 注释语句 \r\n3.2.3 组件确认 \r\n3.2.4 操作符和优先级 \r\n3.2.5 独立词 \r\n3.2.6 上下文 \r\n3.2.7 逻辑值 \r\n3.3 Perl的代码体系 \r\n\r\n第4章 变量和数据\r\n\r\n4.1 基本命名规则 \r\n4.2 标量变量 \r\n4.3 字面量 \r\n4.3.1 数字字面量 \r\n4.3.2 字符串字面量\r\n4.3.3 字符串引用 \r\n4.3.4 数组的内插 \r\n4.3.5 本地文档 \r\n4.3.6 V-字符串 \r\n4.4 数组 \r\n4.5 哈希结构 \r\n4.6 列表 \r\n4.7 类型标识(Typeglobs) \r\n4.8 被定义的函数和未定义值 \r\n4.9 默认值 \r\n4.10 其他标记 \r\n4.11 特殊变量 \r\n\r\n第5章 语句和控制结构 \r\n\r\n5.1 代码块 \r\n5.2 条件语句\r\n5.3 循环语句\r\n5.3.1 while循环 \r\n5.3.2 until循环 \r\n5.3.3 for循环 \r\n5.3.4 foreach循环 \r\n5.3.5 continue块 \r\n5.3.6 标签 \r\n5.3.7 循环控制 \r\n5.3.8 非限定块 \r\n5.3.9 goto语句 \r\n\r\n第6章 子程序、包和模块 \r\n\r\n6.1 函数 \r\n6.1.1 参数\r\n6.1.2 返回值 \r\n6.1.3 错误通告\r\n6.1.4 上下文 \r\n6.1.5 属性 \r\n6.1.6 原型 \r\n6.2 包 \r\n6.2.1 包符号表 \r\n6.3 特殊块 \r\n6.4 模块 \r\n6.4.1 建立模块 \r\n6.4.2 Exporter模块 \r\n6.4.3 use和require的比较 \r\n6.4.4 no语句 \r\n6.4.5 do语句 \r\n6.5 作用域 \r\n6.5.1 “my”的效果 \r\n6.5.2 “local”的效果 \r\n6.5.3 “our”的效果 \r\n6.5.4 循环中的作用域\r\n6.6 自动装载 \r\n\r\n第7章 文件操作 \r\n\r\n7.1 文件句柄 \r\n7.1.1 打开和关闭文件 \r\n7.1.2 输入/输出句柄 \r\n7.1.3 文件定位 \r\n7.1.4 混合控制函数 \r\n7.2 文件管理 \r\n7.2.1 文件信息\r\n7.2.2 基本的文件管理 \r\n7.2.3 目录访问 \r\n7.2.4 管理目录 \r\n7.2.5 使用fcntl函数进行文件的控制 \r\n7.2.6 通过ioctl函数进行I/O控制 \r\n7.2.7 select函数 \r\n7.2.8 文件加锁 \r\n\r\n第8章 数据操作 \r\n\r\n8.1 数字处理 \r\n8.1.1 abs—绝对值 \r\n8.1.2 int—将浮点数转换为整数 \r\n8.1.3 exp—e为底的乘方 \r\n8.1.4 sqrt—开方运算 \r\n8.1.5 log—对数函数 \r\n8.1.6 三角函数 \r\n8.1.7 进制转换 \r\n8.1.8 字符和数字之间的转换 \r\n8.1.9 随机数 \r\n8.1.10 小整数的操作 \r\n8.2 字符串操作 \r\n8.2.1 字符串连接\r\n8.2.2 字符串长度\r\n8.2.3 改变字符大小写 \r\n8.2.4 行结束字符的消除\r\n8.2.5 字符串定位 \r\n8.2.6 提取子串 \r\n8.2.7 栈 \r\n8.2.8 数组切片 \r\n8.2.9 join函数 \r\n8.2.10 split函数\r\n8.2.11 grep函数 \r\n8.2.12 map函数 \r\n8.2.13 sort函数\r\n8.2.14 reverse \r\n8.3 正则表达式 \r\n8.3.1 模式修饰符\r\n8.3.2 匹配操作符\r\n8.3.3 替换操作符\r\n8.3.4 转换 \r\n8.3.5 正则表达式的元素 \r\n8.3.6 正则表达式变量 \r\n8.3.7 正则表达式扩展名/断言 \r\n8.3.8 预编译表达式 \r\n8.3.9 正则表达式的支持函数 \r\n8.4 Unicode \r\n8.4.1 Perl对于Unicode的解释 \r\n8.4.2 Perl中的Unicode字符 \r\n8.4.3 Unicode作用于Perl的效果 \r\n\r\n第9章 错误和捕获错误 \r\n\r\n9.1 在脚本中加入错误确认的代码 \r\n9.1.1 错误确认方法 \r\n9.1.2 错误确认方针 \r\n9.2 什么是要确认的错误 \r\n9.3 什么是不需要确认的错误 \r\n9.4 什么时候停止确认 \r\n9.4.1 尽量避免画蛇添足\r\n9.4.2 函数、返回值和内嵌结构 \r\n9.5 表示错误的信息和数字 \r\n9.6 在脚本中报告错误 \r\n9.6.1 Warn函数 \r\n9.6.2 Die函数 \r\n9.6.3 指示和标记 \r\n9.7 在模块中进行报错 \r\n9.7.1 Carp函数 \r\n9.7.2 Cluck函数\r\n9.7.3 Croak函数\r\n9.7.4 Confess函数 \r\n\r\n第2部分 使用Perl编程\r\n\r\n第10章 复杂数据结构 \r\n\r\n10.1 访问打包的数据结构 \r\n10.2 引用 \r\n10.2.1 建立硬引用 \r\n10.2.2 反引用 \r\n10.2.3 判断引用中的数据类型 \r\n10.2.4 软引用 \r\n10.3 复杂结构 \r\n10.3.1 二维数组\r\n10.3.2 二维哈希结构 \r\n10.3.3 哈希结构的数组\r\n10.3.4 数组的哈希结构\r\n10.3.5 多于二维的结构\r\n10.4 对象 \r\n10.4.1 关于对象的基础知识 \r\n10.4.2 建立和使用对象 \r\n10.4.3 对象方法 \r\n10.4.4 类和类的继承 \r\n10.4.5 析构函数和垃圾收集 \r\n10.4.6 Perl中对象结构同其他语言的比较 \r\n10.5 使用捆绑 \r\n10.5.1 建立新的捆绑类 \r\n\r\n第11章 系统信息\r\n\r\n11.1 用户和用户组 \r\n11.1.1 获取UNIX的Password \r\n11.1.2 获得UNIX的用户组 \r\n11.1.3 Password加密 \r\n11.2 Time \r\n11.2.1 gmtime和localtime \r\n11.2.2 Time函数 \r\n11.2.3 时间值比较\r\n11.2.4 将日期和时间转换为起始时间值 \r\n11.2.5 时间算法 \r\n11.2.6 times函数\r\n11.2.7 sleep函数\r\n11.2.8 Alarms \r\n11.3 环境变量 \r\n\r\n第12章 网络 \r\n\r\n12.1 获得网络信息 \r\n12.1.1 主机 \r\n12.1.2 协议 \r\n12.1.3 服务 \r\n12.1.4 网络 \r\n12.2 套接字模块\r\n12.2.1 地址解析和转换\r\n12.2.2 地址常量 \r\n12.2.3 套接字结构\r\n12.2.4 行结束常量\r\n12.3 利用套接字进行通信 \r\n12.3.1 连接远端套接字 \r\n12.3.2 监听套接字连接信息 \r\n12.4 使用IO::Socket \r\n12.4.1 客户端 \r\n12.4.2 服务器端\r\n12.4.3 使用IO::Socket和IO::Select \r\n12.4.4 获取套接字地址 \r\n12.4.5 关闭套接字 \r\n12.4.6 套接字选项 \r\n12.4.7 数据传递 \r\n12.5 Graham Barr的libnet包族 \r\n12.6 Gisle Aas的LWP包族 \r\n\r\n第13章 数据库系统 \r\n\r\n13.1 文本数据库 \r\n13.1.1 限定数据库\r\n13.1.2 固定长度的记录 \r\n13.2 DBM数据库 \r\n13.2.1 DBM的实现\r\n13.2.2 DBM函数 \r\n13.2.3 使用捆绑DBM数据库 \r\n13.2.4 在DBM各种格式之间转换 \r\n13.2.5 使用AnyDBM_File \r\n13.2.6 GDBM的特性 \r\n13.2.7 Berkeley DB特性 \r\n13.2.8 在DBM数据库中存放复杂的数据 \r\n13.2.9 DBM中的关系型数据库 \r\n13.3 数据库的文件锁定 \r\n13.4 使用DBI和Win32::ODBC 工具集 \r\n13.4.1 DBI \r\n13.4.2 Win32::ODBC \r\n13.4.3 数据库机制和兼容 \r\n13.4.4 数据库连接 \r\n13.4.5 执行简单查询\r\n13.4.6 执行扩展查询\r\n13.4.7 关闭数据库连接 \r\n13.4.8 确认错误 \r\n13.5 复习SQL语言\r\n13.5.1 SQL语句 \r\n\r\n第14章 进程间通信 \r\n\r\n14.1 进程 \r\n14.1.1 控制Perl运行 \r\n14.1.2 进程信息 \r\n14.1.3 进程组 \r\n14.1.4 进程优先级 \r\n14.2 信号 \r\n14.2.1 信号句柄 \r\n14.2.2 _WARN_和_DIE_信号 \r\n14.2.3 发送信号 \r\n14.3 管道 \r\n14.3.1 匿名管道 \r\n14.3.2 双向通信 \r\n14.3.3 命名管道 \r\n14.3.4 Windows下的命名管道 \r\n14.3.5 安全管道 \r\n14.4 执行附加进程\r\n14.4.1 运行其他程序 \r\n14.4.2 替换当前脚本 \r\n14.4.3 建立子进程 \r\n14.5 其他的函数调用\r\n14.6 system V IPC \r\n\r\n第15章 其他运行方法 \r\n\r\n15.1 以命令行形式执行Perl \r\n15.1.1 特殊操作 \r\n15.2 Perl的环境变量 \r\n15.3 Perl in Perl(eval) \r\n15.3.1 使用eval EXPR \r\n15.3.2 使用eval BLOCK\r\n15.3.3 捕捉意外情况 \r\n15.3.4 返回信息 \r\n15.3.5 eval和_DIE_信号句柄 \r\n15.4 线程 \r\n15.4.1 多任务如何实现 \r\n15.4.2 从多任务到多线程\r\n15.4.3 线程和多进程的比较 \r\n15.4.4 线程和select()函数的区别 \r\n15.4.5 线程和Perl \r\n15.4.6 创建一个新线程 \r\n15.4.7 通过匿名者函数建立线程 \r\n15.4.8 线程控制 \r\n15.4.9 变量控制 \r\n15.4.10 队列 \r\n15.4.11 标志(semaphore) \r\n15.4.12 信号 \r\n15.5 安全性 \r\n15.5.1 使用 Taint 模式 \r\n15.5.2 safe模块和opcode模块 \r\n\r\n第3部分 开发应用\r\n\r\n第16章 用户界面工具 \r\n\r\n16.1 处理命令行参数 \r\n16.1.1 Getopt::std \r\n16.1.2 Getopt::Long\r\n16.2 Perl输出显示机制 \r\n16.2.1 标题和脚注 \r\n16.2.2 格式函数 \r\n16.2.3 格式变量 \r\n\r\n第17章 高级用户界面 \r\n\r\n17.1 终端中的一些处理 \r\n17.2 使用TK \r\n17.2.1 在UNIX下安装TK \r\n17.2.2 在Windows下安装TK \r\n17.2.3 接触TK \r\n17.2.4 事件循环\r\n17.2.5 部件 \r\n17.2.6 控制窗口位置大小 \r\n17.2.7 简化处理 \r\n\r\n第18章 Web中的Perl \r\n\r\n18.1 HTML \r\n18.2 统一资源定位符URL \r\n18.3 Web操作浏览 \r\n18.4 环境 \r\n18.5 通用网关接口(CGI) \r\n18.5.1 数据提取 \r\n18.5.2 返回相关的数据到用户浏览器中 \r\n18.5.3 文档主体 \r\n18.6 Web编程 \r\n18.7 CGI模块 \r\n18.7.1 cookies \r\n18.8 解析HTML \r\n18.9 解析XML \r\n18.10 调试程序 \r\n18.11 安全性 \r\n\r\n第19章 通过标记控制Perl的执行 \r\n\r\n19.1 告警 \r\n19.2 $^W变量 \r\n19.3 以前Perl版本中的warnings标记 \r\n19.4 Perl5.6中的词法告警 \r\n19.5 strict标记 \r\n19.5.1 vars选项 \r\n19.5.2 refs选项 \r\n19.5.3 subs选项 \r\n19.6 其他Perl标记\r\n19.6.1 attributes标记 \r\n19.6.2 autouse标记 \r\n19.6.3 base标记 \r\n19.6.4 blib标记 \r\n19.6.5 bytes标记\r\n19.6.6 charnames标记 \r\n19.6.7 constant标记 \r\n19.6.8 diagnostics标记 \r\n19.6.9 field标记 \r\n19.6.10 integer \r\n19.6.11 less \r\n19.6.12 lib \r\n19.6.13 locale \r\n19.6.14 open \r\n19.6.15 ops \r\n19.6.16 overload \r\n19.6.17 re \r\n19.6.18 sigtrap \r\n19.6.19 subs \r\n19.6.20 vars \r\n\r\n第20章 扩展和嵌入Perl \r\n\r\n20.1 Perl的内核 \r\n20.1.1 Perl体系结构 \r\n20.1.2 内部对象 \r\n20.1.3 翻译器 \r\n20.1.4 操作码 \r\n20.1.5 编译 \r\n20.1.6 执行 \r\n20.2 Perl的内部结构 \r\n20.2.1 变量 \r\n20.2.2 栈 \r\n20.2.3 栈的大小 \r\n20.2.4 Perl内核的归纳 \r\n20.3 Perl的扩展编程 \r\n20.3.1 Perl的扩展接口\r\n20.3.2 XS简介 \r\n20.3.3 SWIG简介\r\n20.3.4 使用XS \r\n20.4 在其他语言中使用Perl \r\n20.4.1 内嵌Perl解释器 \r\n20.4.2 使用特定的函数 \r\n20.4.3 多个实例 \r\n20.4.4 XS初始化过程 \r\n20.5 同其他语言配合使用 \r\n20.5.1 将其他语言转换成Perl \r\n20.5.2 将Perl转换成其他语言 \r\n20.5.3 在Perl中调用其他语言 \r\n\r\n第21章 调试程序和优化代码 \r\n\r\n21.1 调试技术 \r\n21.1.1 使用Print语句 \r\n21.1.2 使用caller \r\n21.1.3 使用eval函数\r\n21.1.4 编写日志 \r\n21.1.5 向syslog报告调试信息 \r\n21.1.6 向Windows NT/2000事件日志报告调试信息 \r\n21.2 使用调试器 \r\n21.2.1 watches监控 \r\n21.2.2 步进 \r\n21.2.3 断点 \r\n21.2.4 Perl 调试器 \r\n21.2.5 ActivePerl调试器 \r\n21.3 Perl和其他语言的差别\r\n21.3.1 Perl和awk/gawk的差别 \r\n21.3.2 Perl和C之间容易混淆的地方 \r\n21.3.3 Perl和sed之间容易混淆的地方\r\n21.3.4 Perl和emacs之间容易混淆的地方 \r\n21.3.5 Shell和Perl之间容易混淆的地方 \r\n21.3.6 Perl和python之间容易混淆的地方\r\n21.4 代码优化 \r\n21.4.1 Perl Profiler \r\n21.4.2 手工Profiling \r\n21.4.3 优化代码时要注意的地方 \r\n\r\n第22章 Perl编译器 \r\n\r\n22.1 使用转储功能 \r\n22.2 使用Perl编译器\r\n22.2.1 后端 \r\n22.2.2 perlcc前端 \r\n22.2.3 解释代码和编译代码之间的区别 \r\n22.3 速度比较 \r\n22.3.1 测试 \r\n22.3.2 概括结果 \r\n\r\n第23章 Perl的文档 \r\n\r\n23.1 使用Perl提供的文档 \r\n23.1.1 UNIX \r\n23.1.2 Windows \r\n23.1.3 Mac OS/Mac OS X \r\n23.2 编写POD文档 \r\n23.2.1 POD组件 \r\n23.2.2 命令段落\r\n23.2.3 一般文本段落 \r\n23.2.4 Verbatim段落 \r\n23.2.5 转义序列 \r\n23.2.6 嵌入文档 \r\n23.3 将POD转换成其他格式 \r\n23.3.1 文本(TEXT) \r\n23.3.2 HTML \r\n23.3.3 man page \r\n23.3.4 PostScript/PDF \r\n23.3.5 通过自己编写的脚本将POD转换成HTML \r\n\r\n第24章 Perl中跨平台使用的问题 \r\n\r\n24.1 函数支持 \r\n24.2 常量的跨平台兼容 \r\n24.3 执行环境 \r\n24.4 错误报告 \r\n24.5 行结束符 \r\n24.6 字符集 \r\n24.7 数据差别\r\n24.8 文件和文件路径 \r\n24.9 模块 \r\n24.10 性能和资源 \r\n24.11 跨系统使用Perl的一些技巧 \r\n24.11.1 判断当前的操作系统 \r\n24.11.2 判断Perl版本 \r\n24.11.3 检验所支持的函数 \r\n24.11.4 函数重载 \r\n\r\n第25章 发布模块和应用程序 \r\n\r\n25.1 Perl Makefile和Extutils::MakeMaker \r\n25.1.1 Perl Makefiles和CPAN \r\n25.1.2 Perl Makefiles和PPM \r\n25.1.3 扩展程序建立和安装概述 \r\n25.1.4 MakeMaker概述 \r\n25.1.5 h2xs工具 \r\n25.1.6 MakeMaker配置选项 \r\n25.1.7 创建一个伪程序描述文件 \r\n25.1.8 默认的程序描述文件目标 \r\n25.1.9 创建一个新的Perl二进制可执行文件 \r\n25.1.10 Package Builder的目标 \r\n25.2 MakeMaker的一些技巧 \r\n25.2.1 确定先决条件 \r\n25.3 向CPAN提供打包的模块 \r\n25.4 向PPM/VPM提供打包的模块 \r\n\r\n附录A 参考函数 \r\n附录B 标准Perl库\r\n附录C 资源
写作这本书的目的是向Perl程序员提供一个全方位的参考.在本书中, 我尽可能多地涵盖Perl的各个方面, 也就是说, 从Perl的内核到各种不同的函数以及对Perl语言各方面的用途都进行分析阐述.我甚至也讲述了如何调试软件.编写文档以及建立和发布应用程序或者模块的内容.另外我也顺便提及了Perl的一些非标准的特性和扩展程序, 包括更好的网络.Web编程和设计界面等内容.
本书提供了许多实用的例程, 并且给出了一些用Perl解决实际问题的建议——而不是仅仅停留在如何使用Perl这个软件的功能的层面上.如果要快速地查找某个主题的相关参考, 可以使用书后的附录和网站www.osborne.com上的相关内容, 其中后者包括了Perl的基本组件.函数.标准库.CPAN(Comprehensive Perl Archive Network).警告和错误的完全参考以及可用资源列表等信息.
与第一版相比有了哪些改进
新版本的最明显的改进在于讲述了Perl的最新版本, 并且全面地调整了本书的布局.我们收到了关于上一版以及书中的一些漏洞和问题的大量的反馈信息, 这些信息表明我们最需要的是关于Perl语言的很好的介绍性的参考手册.因此, 我们对本书的第一版几乎完全进行了重写, 为那些刚开始编程的人和从其他语言转过来的人提供一个丰富的有吸引力的参考.
本书的第2部分和第3部分做了修正, 很多章中提供了面向应用的实际解决方案, 这就意味着章节的顺序和内容有了改变.我们在很多方面扩充了内容, 包括更多的网络方面的信息.数据库访问(现在包含了扩展的DBI和WIN32::ODBC模块)和Web编程.
本书的最后一部分指明了在把你的Perl程序变成一个分布式的应用后应做的一些处理, 这包括调试脚本, 使用Perl编译器来提高程序的效率和在程序中查错.Perl文档这一章被修改成了教授如何利用已有的文档和信息来写自己的文档.最后, 我们讨论了如何开发跨平台的应用和包以及如何分发你的应用或模块等方面的主题.
总之, 在整本书中我尽量不以UNIX为中心, 并且讲述了更多的关于开发跨平台应用的内容, 而不是把这些内容压缩在最后的几章中.
本书适合于谁
这本书并不是为任何特定的Perl用户组而写的, 简单地说, 如果你使用Perl进行编程, 你会发现这本书是有用的.作为一本参考书, 大多数人可能会发现这本书非常适合放在桌子或书架上用来对Perl的某些函数或特性进行快速的查阅参考.无论对于初学者, 还是专业用户, 这本书都是“非常有价值”的.
同样, 如果想要对于Perl的某个专题进行研究的话, 这本书是适合的, 因为本书中提供了大量的可以参考的例子.
如何使用这本书
这本书适用于对某些专题进行查询, 进而获取相关的信息.本书中的代码可以不需要多大改动就能移植到你的机器上去.但是要注意并不是所有的操作系统都支持Perl的全部功能, 第24章讲述了开发跨平台应用方面的内容.
如果想获得真正的参考信息, 就是说, 想要查询一个函数的参数和返回的值——那么就可以使用本书后面的附录或者到网站www.osborne.com上查询.如果要查询关于某一个专题的详细内容, 可以参考本书相关的章节, 也可以同时参考书中的章节和书后的附录来获得更详细的内容.
章节内容安排
书中每一章对于Perl中的某一个专题进行了讨论.
第1章介绍了有关Perl的背景知识和Perl的基本功能, 只有理解了这些内容, 才能够更好地使用Perl.
第2章介绍了使用Perl编程的基本过程, 从在UNIX.Windows.Mac OS上安装Perl到如何编写和执行你的第一个脚本都有介绍, 另外在这一章中还提到了在阅读本书和使用Perl时的一些专用术语.
第3章介绍了Perl语言的基本语法和解析规则, 包括Perl脚本是如何执行的, 以及组成Perl脚本的不同组件.
第4章介绍了Perl的变量类型.Perl支持3种基本的变量类型——标量.数组和哈希结构.
第5章介绍了Perl语句以及控制Perl的流程和程序执行的控制结构的一些细节.
第6章详细讨论了Perl程序的不同组成部分, 包括简单的子程序和比较复杂的模块.
第7章介绍了文件的使用等内容, 包括基本的文件操作和从多个文件中读取数据.
第8章详细讨论了数据处理——这可能是Perl最有用的功能.本章详细介绍了字符串和数组的处理方法, 然后仔细地讲述了正则表达式方面的内容.
第9章详细阐述了确认和捕捉错误的机制, 以及如何在不扰乱用户的情况下解决问题.
第10章讨论了比较复杂的数据结构——数组和哈希结构.我们不局限于讨论这些结构的一般的用途, 并且从不同方面观察它们如何用于编程.我们也可以通过参考(Refrence)来学习如何访问和使用储存在变量中信息.内嵌的数据结构以及面向对象的编程的内容.本章的最后一节将讨论捆绑的数据接口——一个提供了将外部的数据源和内部的数据结构相关联的系统.
第11章讨论了获得系统信息的不同方法, 例如关于用户.用户组.时间的信息, 以及如何操作这些值, 并且介绍了通过改变这些环境设置来影响脚本的执行的方法.
第12章介绍了在Perl中支持在标准网络套接字间通信的问题, 如用于在Internet间进行通信所需的操作.
第13章讨论了如何使用外部数据库中的信息, 包括使用ODBC.Oracle.DBM这些系统.
第14章介绍了通过标准文件句柄或者系统V IPC函数进行进程间通信的内容, 另外也讨论了建立.控制和外部进程进行通信的方法.
第15章讨论了执行脚本的一些高级的方法, 包括在命令行中向脚本提供参数到在Perl解释器中动态地运行脚本(使用eval)和如何使用线程作为运行多进程的替代等内容.
第16章讨论了在命令行上通过具有一定格式的接日在脚本利用户之间进行数据传递方法.
第17章详细讨论Perl的用户界面设计方面的内容, 介绍了Perl/Tk(Perl的用户界面开发系统接口).
第18章介绍了编写Web脚本的环境, 这包括脚本所处的硬件环境和在Web服务器.用户浏览器和脚本(CGI)之间的通信.还介绍了关于Web开发过程和 Perl的 Web编程的细节, 包括Web编程中关于安全性方面的检查列表(CheckList).
第19章介绍了如何通过许多编译标示来控制脚本的运行和执行的方法, 这样便于及早发现脚本中可能出现问题, 提供附加的警告和错误信息以及改变脚本被解释的方式.
第20章描述通过外部的C函数进行Perl的扩展编程, 以及将Perl嵌入到其他语言编写的程序中的方法.
第21章介绍了如何对Perl脚本进行调试, 也就是说, 在Perl解释器内部进行简单的或者比较深入复杂的调试.另外, 我们讨论如何调试正则表达式以及如何使用Perl Profiler来确定哪一部分脚本的代码需要优化.
第22章讨论了Perl的编译器.不同的系统执行一个脚本并且产生许多不同的报文和输出格式, 从简单的层次上说, 这包括一个代码树并且描述一个脚本执行过程的描述文件, 以及标量的结束, 编译器提供了产生独立的二进制文件的机制.
第23章讨论了Perl文档使用和发展的情况, 本章中介绍如何阅读文档以及一些编写自己的文档介绍.
第24章集中讨论了如何编写一个能够拥有跨平台兼容性的程序.本章中阐述了如何在不同的环境中使用Perl的一些基本问题, 值得去注意的一些问题以及让脚本能够更好地适应不同操作系统的一些方法.
第25章讨论了向Perl团体发布Perl模块的过程.特别地, 本章讲述了MakeMaker工具, 它用于建立能够被扩展程序编译和自动装载的Makefiler.
附录中包括了一些能用于编程的参考资料, 包括Perl的所有函数(附录A).标准Perl库(附录B), 以及相关资源——书籍.站点.邮件列表和新闻组(附录C).
www.osborne.com提供了关于Perl核心架构的参考(附录A), 所有扩展程序的参考(附录B), 以及解释器所产生的关于告警和错误信息的完整列表(附录C).
本书的约定
本书中所有的关键字都用黑体表示, 但所列出的函数并不使用括号.这是因为在Perl中所继承的C语言的函数可能会按照下列形式来表达this().
对函数描述的格式为用等宽度的字体表示.
注意:关于某些特定主题的一些附加信息用这种小字体来表示.同样, 某些在编程时的警告信息也用这种方式来表示.
如何联系本书的作者
欢迎对本书提出宝贵意见, 我尤其欢迎关于达到不同编程目的的更好的方法指导和建议, 特别是利用Perl这样的功能强大而且变化非常多的语言.
读者最好通过电子邮件(E-mail)和我联系, 我的邮件地址是books@mcwords.com或者mc@whoever.com.另外也可以访问我的个人主页http://wwm.mcwords.com, 其中包含了许多脚本的资源和升级信息, 另外还有本书的全部内容, 这本书的主页可以在http://www.mcwords.com/ projects/books/ pcr2e中找到.