内容简介
第1章 高级正则表达式
可读的正则表达式/x和(?#&)
全局匹配
全局匹配锚定
递归正则表达式
重复子模式
前后查找
向前查找断言(?=PATTERN)与(?!PATTERN)
向后查找断言(?<!PATTERN)与(?<=PATTERN)
调试正则表达式
参数-D
总结
延伸阅读
第2章 安全编程技术
不良数据会毁了你的生活
污点检测
用警告代替致命错误
自动污点检测模式
mod_perl
污点数据
污点检测的副作用
清除数据污点
IO::Handle::untaint
哈希表关键字
Taint::Util
用污点数据选择无污点数据
符号引用
DBI防御性数据库编程
system和exec命令的列表形式
三个参数的open函数
sysopen
限制特殊权限
Safe隔间
Safe模块的局限性
娱乐一下
总结
延伸阅读
第3章 Perl调试器
避免浪费太多的时间
世界上最好的调试器
安全地修改模块
封装子程序
Perl调试器
备选调试器
用-d启用其他调试器
Devel::ptkdb
Devel::ebug
Devel::hdb
集成开发环境调试器
EPIC
Komodo
总结
延伸阅读
第4章 Perl性能分析
找出罪魁祸首
通用方法
DBI性能分析
其他DBI::Profile报告
懒惰是美德,能否简单点
切换为数据库
Devel::NYTProf模块
写一个自己的分析器
Devel::LineCounter模块
性能分析测试套件
Devel::Cover模块
总结
延伸阅读
第5章 Perl基准测试
基准测试理论
测量时间
比较代码
不要停止思考
隔离环境
处理异常值
内存使用
perlbench工具
总结
延伸阅读
第6章 清理Perl程序
好的风格
perltidy程序
去除混淆
对隐藏代码的解码
用B::Deparse对代码进行逆向解析
Perl::Critic模块
创建我们自己的Perl::Critic策略
总结
延伸阅读
第7章 符号表和Typeglob
软件包变量和词法变量
获取软件包变量
符号表
Typeglob
别名
旧代码中的文件句柄参数
给匿名子程序命名
简单的方法
总结
延伸阅读
第8章 动态子程序
子程序作为数据
创建与替换命名子程序
符号引用
遍历子程序列表
处理流水线
自引用匿名子程序
方法列表
子程序作为参数使用
自动加载方法
哈希表作为对象
自动切分
总结
延伸阅读
第9章 修改和提升模块
选择正确的解决方案
给作者发送补丁
本地修补
接管一个模块
分支
从头开始做自己的模块
替换模块的一部分
派生子类
一个ExtUtils::MakeMaker的例子
其他例子
封装子程序
总结
延伸阅读
第10章 配置Perl程序
不要做的事
将配置代码放到独立的文件中
更好的办法
环境变量
特殊环境变量
打开额外的输出
命令行选项
Perl的-s选项
Getopt模块
配置文件
ConfigReader::Simple
Config::IniFiles
Config::Scoped
其他配置文件
具有不同名字的脚本
交互和非交互程序
Perl的配置模块
不同的操作系统
总结
延伸阅读
第11章 检测和报告错误
Perl错误处理基础
操作系统错误
子进程错误
操作系统特定的错误
报告模块错误
分解问题
异常
eval
多层嵌套的die
在die中使用引用
用die传递对象
打破$@
autodie
报告罪魁祸首
捕获异常
Try::Tiny
TryCatch
多态返回值
总结
延伸阅读
第12章 日志
记录错误和其他信息
Log4perl
子程序参数
配置Log4perl
持久化日志配置
日志分类
其他的Log::Log4perl功能
总结
延伸阅读
第13章 数据持久化
Perl特有的格式
打包
定长记录
展开二进制格式
Data::Dumper
类似的模块
Storable模块
冻结数据
Storable模块的安全问题
Sereal模块
DBM文件
dbmopen函数
DBM::Deep模块
Perl所不认识的格式
JSON格式
YAML格式
MessagePack格式
总结
延伸阅读
第14章 使用Pod
Pod格式
Pod指令
编码
正文元素
转换Pod
Pod转换程序
Pod::Perldoc::ToToc模块
Pod::Simple模块
从Pod::Simple派生子类
Web服务器中的Pod
测试Pod
检查Pod
Pod覆盖率
隐藏和忽略函数的Pod覆盖率检查
总结
延伸阅读
第15章 位操作
二进制数
以二进制数方式输出
位操作符
一元取反操作符(~)
按位与操作(&)
按位或操作(|)
按位异或操作(∧)
左移位(<<)和右移位(>>)操作符
位向量
vec函数
位字符串的存储
存储DNA
素数判定
记录事情
总结
延伸阅读
第16章 绑定变量的魔法
看起来普通的变量
在用户层面
帷幕之后
标量
Tie::Cycle模块
有界整数
自毁值
数组
重新创建数组
一些现实中的东西
哈希表
文件句柄
总结
延伸阅读
第17章 模块即程序
main入口
回到过去
谁在调用
测试程序
模块即测试
创建程序发布包
在程序中加内容
发布程序
总结
延伸阅读
附录A 延伸阅读
Perl书籍
非Perl书籍
附录B brian的Perl问题解决指导手册
解决问题的哲学
我的方法
那些我做过和仍在做的蠢事
本书Perl模块索引
索引