第一章 简介 10
问题与答案 10
这本书适合你吗? 10
为何有这么多的脚注? 11
关于习题和解答? 12
习题前标的数字是什么意思? 13
如果我是Perl讲师? 13
“Perl”这个词表示什么意思? 13
Larry为什么要创造Perl ? 13
Larry干吗不用其他语言? 14
Perl算容易,还是算难? 15
Perl怎么会这么流行? 16
现在的Perl发展得怎么样了? 16
哪些事情最适合用Perl来做? 17
哪些事情不适合用Perl来做? 18
如何取得Perl ? 18
CPAN是什么? 19
如何得到Perl的技术支持? 19
还有别的技术支持方式吗? 20
如果发现Perl有bug,我该怎么办? 21
我该怎么编写Perl程序? 22
一个简单的程序 22
程序里写的是什么? 24
我该如何编译Perl程序? 26
走马观花 27
习题 28
第二章 标量数据 30
数字 30
所有数字的内部格式都相同 30
浮点数直接量 31
整数直接量 31
非十进制整数的直接量 32
数字操作符 33
字符串 33
单引号内的字符串直接量 34
双引号内的字符串直接量 34
字符串操作符 36
数字与字符串之间的自动转换 36
Perl的内置警告信息 37
标量变量 39
给变量取个好名字 40
标量的赋值 40
双目赋值操作符 41
用print输出结果 41
字符串中的标量变量内插 42
借助代码点创建字符 43
操作符的优先级与结合性 44
比较操作符 46
if控制结构 47
布尔值 47
获取用户输入 48
chomp操作符 49
while控制结构 50
undef值 50
defined函数 51
习题 52
第三章 列表与数组 53
访问数组中的元素 54
特殊的数组索引 55
列表直接量 56
qw简写 56
列表的赋值 58
pop和push操作符 59
shift和unshift操作符 61
splice操作符 61
字符串中的数组内插 62
foreach控制结构 63
Perl最喜欢用的默认变量:$_ 64
reverse操作符 65
sort操作符 65
each操作符 66
标量上下文与列表上下文 66
在标量上下文中使用产生列表的表达式 68
在列表上下文中使用产生标量的表达式 69
强制指定标量上下文 70
列表上下文中的〈STDIN〉 70
习题 72
第四章 子程序 73
定义子程序 73
调用子程序 74
返回值 75
参数 76
子程序中的私有变量 78
变长参数列表 79
改进的&max子程序 79
空参数列表 80
关于词法(my)变量 81
use strict编译指令 82
return操作符 84
省略与号 85
非标量返回值 86
持久化私有变量 87
习题 88
第五章 输入与输出 90
读取标准输入 90
来自钻石操作符的输入 92
调用参数 94
输出到标准输出 95
用printf格式化输出 98
数组和printf 100
文件句柄 100
打开文件句柄 102
以二进制方式读写文件句柄 105
有问题的文件句柄 106
关闭文件句柄 106
用die处理致命错误 107
用warn输出警告信息 109
自动检测致命错误 109
使用文件句柄 110
改变默认的文件输出句柄 111
重新打开标准文件句柄 111
用say来输出 112
标量变量中的文件句柄 113
习题 115
第六章 哈希 116
什么是哈希? 116
为何使用哈希? 118
访问哈希元素 119
访问整个哈希 121
哈希赋值 122
胖箭头 123
哈希函数 124
keys和values函数 124
each函数 125
哈希的典型应用 126
exists函数 127
delete函数 127
哈希元素内插 128
%ENV哈希 128
习题 129
第七章 漫游正则表达式王国 130
什么是正则表达式? 130
使用简单模式 131
Unicode属性 132
关于元字符 133
简单的量词 133
模式分组 134
择一匹配 137
字符集 137
字符集的简写 138
反义简写 141
习题 141
第八章 用正则表达式进行匹配 143
用m∥进行匹配 143
模式匹配修饰符 144
用/i进行大小写无关的匹配 144
用/s匹配任意字符 144
用/x加入空白符 145
组合选项修饰符 145
选择一种字符解释方式 146
其他选项 148
锚位 148
单词锚位 150
绑定操作符=~ 151
模式中的内插 152
捕获变量 153
捕获变量的存续期 154
不捕获模式 155
命名捕获 156
自动捕获变量 158
通用量词 160
优先级 161
优先级范例 162
还有更多 162
模式测试程序 162
习题 163
第九章 用正则表达式处理文本 165
用s///进行替换 165
用/g进行全局替换 166
不同的定界符 167
可用替换修饰符 167
绑定操作符 167
无损替换 167
大小写转换 168
split操作符 169
join函数 170
列表上下文中的m∥ 171
更强大的正则表达式 172
非贪婪量词 172
跨行的模式匹配 174
一次更新多个文件 175
从命令行直接编辑 177
习题 178
第十章 其他控制结构 180
unless控制结构 180
伴随unless的else子句 181
until控制结构 181
表达式修饰符 182
裸块控制结构 183
elsif子句 184
自增与自减 185
自增的值 186
for控制结构 187
foreach和for间的秘密关系 189
循环控制 190
last操作符 190
next操作符 191
redo操作符 192
带标签的块 193
条件操作符?: 194
逻辑操作符 195
短路操作符的值 196
定义或操作符 196
使用部分求值操作符的控制结构 197
习题 199
第十一章 Perl模块 201
寻找模块 201
安装模块 202
安装到自己的目录 204
使用简易模块 205
File∷Basename模块 206
仅选用模块中的部分函数 207
File∷Spec模块 208
Path∷Class模块 210
CGI.pm模块 210
数据库和DBI模块 211
处理日期和时间的模块 212
习题 214
第十二章 文件测试 215
文件测试操作符 215
测试同一文件的多项属性 220
栈式文件测试操作符 221
stat和lstat函数 222
localtime函数 224
按位运算操作符 225
使用位字符串 226
习题 226
第十三章 目录操作 228
在目录树中移动 228
文件名通配 229
文件名通配的另一种语法 230
目录句柄 231
递归访问目录 233
文件和目录的操作 234
删除文件 234
重命名文件 236
链接与文件 237
创建和删除目录 242
修改权限 244
修改隶属关系 244
修改时间戳 245
习题 245
第十四章 字符串与排序 247
用index查找子字符串 247
用substr操作子字符串 248
用sprintf格式化字符串 250
用sprintf格式化金额数字 250
非十进制数字字符串的转换 252
高级排序 252
按哈希值排序 256
按多个键排序 257
习题 258
第十五章 智能匹配与given-when结构 259
智能匹配操作符 259
智能匹配操作的优先级 262
given语句 264
笨拙匹配 267
多个条目的when匹配 268
习题 269
第十六章 进程管理 271
system函数 271
避免使用Shell 273
环境变量 275
exec函数 275
用反引号捕获输出结果 276
在列表上下文中使用反引号 279
用IPC∷System∷Simple执行外部进程 280
通过文件句柄执行外部进程 281
用fork进行深入和复杂的工作 283
发送及接收信号 284
习题 287
第十七章 高级Perl技巧 288
切片 288
数组切片 290
哈希切片 292
捕获错误 293
用eval 294
更为高级的错误处理 297
autodie 299
用grep筛选列表 300
用map把列表元素变形 302
更花哨的列表工具 303
习题 305
附录A 习题解答 307
附录B 超越“小骆驼” 343
附录C Unicode入门 354