第1章 Perl语言概述 1
1.1 Perl语言的历史 1
1.2 Perl语言的特点及功能 2
1.3 Perl在不同系统上的安装 3
1.3.1 在UNIX/Linux系统下安装Perl 3
1.3.2 在Windows 9x/2000/NT下安装Perl 4
1.3.3 在MS-Dos下安装Perl 7
1.3.4 文档和模块的安装 7
1.4 运行Perl程序 8
1.4.1 使用“命令提示符”窗口 8
1.4.2 程序编辑器 10
1.5 简单的Perl程序 10
1.6 Perl语法简介 16
1.6.1 Perl的变量 16
1.6.2 Perl的子程序 17
1.7 使用Perl 5资源 18
小结 19
第2章 Perl中的标量变量 20
2.1 Perl的数据结构 20
2.2 标量变量 20
2.2.1 标量变量简介 21
2.2.2 标量变量名 22
2.2.3 变量声明 22
2.2.4 标量变量值 23
2.3 常量 25
2.3.1 数字常量 25
2.3.2 定点数问题 26
2.3.3 字符串与字符数据 27
2.4 基本输入输出 32
2.4.1 从STDIN输入 32
2.4.2 向STDOUT输出 32
2.4.3 用print和printf输出 33
2.5 标量操作函数 33
2.5.1 数学函数 34
2.5.2 字符串函数 37
2.5.3 标量转换函数 40
2.6 上下文 42
小结 43
第3章 Perl运算符 45
3.1 运算符概述 45
3.2 数字运算符 45
3.2.1 赋值运算符 45
3.2.2 基本数字运算符 45
3.2.3 复合赋值运算符 47
3.2.3 自增和自减运算符 49
3.3 条件运算符 52
3.3.1 整数比较运算符 53
3.3.2 字符串比较运算符 55
3.4 逻辑运算符 58
3.4.1 逻辑与运算符 58
3.4.2 逻辑或运算符 59
3.4.3 逻辑非运算符 59
3.5 二进制运算符 60
3.5.1 二进制与、或、非运算符 61
3.5.2 移位运算 61
3.6 其他运算符 63
3.6.1 区块运算符 63
3.6.2 条件运算符 63
3.6.3 逗号运算符 64
3.7 优先次序和结合性 64
3.7.1 运算符的优先次序 64
3.7.2 运算符的结合性 65
小结 66
第4章 数组和哈希变量 67
4.1 概述 67
4.2 数组和列表 67
4.2.1 列表 67
4.2.2 数组简介 68
4.2.3 数组的赋值 69
4.2.4 数组长度 73
4.2.5 增添/删除数组单元 74
4.2.6 数组数据的读取 74
4.2.7 子数组 75
4.3 数组库函数 76
4.3.1 数组拼接函数 76
4.3.2 数组排序函数 77
4.3.3 队列函数 78
4.3.4 其他数组函数 80
4.4 哈希变量 84
4.4.1 初识哈希变量 85
4.4.2 哈希变量赋值和访问 85
4.5 操作哈希变量的库函数 87
小结 90
第5章 Perl的控制结构 92
5.1 控制结构概述 92
5.2 程序的基本结构 92
5.3 条件语句 94
5.3.1 条件表达式 94
5.3.2 If系列语句 96
5.3.3 模拟switch语句 101
5.3.4 三态运算符 104
5.4 循环控制 106
5.4.1 while循环 107
5.4.2 until循环 109
5.4.3 do语句 110
5.4.4 for循环 113
5.4.5 foreach循环 115
5.5 循环修饰符 119
5.5.1 continue块 119
5.5.2 last命令 120
5.5.3 redo命令 121
5.5.4 next命令 122
5.5.5 goto命令 123
小结 123
第6章 引用 125
6.1 引用简介 125
6.1.1 引用的概念 125
6.1.2 引用的使用 125
6.1.3 引用变量类型 126
6.2 直接引用和间接引用 127
6.2.1 直接标量引用 127
6.2.2 直接数组引用 130
6.2.3 直接哈希变量引用 132
6.3 引用的访问方法 134
6.3.1 大括号({}) 134
6.3.2 右箭头运算符 135
6.3.3 方括号 135
6.4 多维数组 135
6.5 匿名数组和匿名哈希变量 141
小结 144
第7章 Perl 5子程序 145
7.1 概述 145
7.2 子程序的语法 145
7.2.1 子程序的定义 145
7.2.2 子程序的调用 146
7.3 子程序参数列表 148
7.3.1 参数列表简介 148
7.3.2 参数中的数组和哈希变量 150
7.3.3 对参数列表的访问 152
7.4 子程序的返回值 156
7.4.1 关键字Return 157
7.5 子程序的引用 159
7.5.1 子程序模板 159
7.5.2 数组与子程序 160
7.6 作用域 163
7.6.1 词法域(lexical) 163
7.6.2 动态作用域(dynamic scoping) 166
小结 168
第8章 文件句柄与文件操作 169
8.1 文件操作概述 169
8.2 打开与关闭文件 169
8.2.1 打开与关闭文件 169
8.2.2 文件名与文件句柄 170
8.3 读取与写入文件 172
8.3.1 从内存读取文件 172
8.3.2 使用seek函数 173
8.3.3 写入文件 175
8.3.4 添加数据 175
8.3.5 修改文件 176
8.4 命令行参数 177
8.4.1 @ARGV数组 177
8.4.2 用<>文件操作符 178
8.5 文件操作函数 179
8.5.1 文件输入/输出函数 180
8.5.2 跳过和重读数据 186
8.5.3 系统读写函数 186
8.5.4 目录处理函数 187
8.5.5 文件属性函数 189
8.6 判断文件状态 192
8.6.1 文件权限测试 193
8.6.2 文件存在性与长度测试 194
8.6.3 文件修改测试 194
8.6.4 UNIX文件句柄类型测试 194
8.6.5 打开管道 195
小结 195
第9章 打印与格式化输出 197
9.1 使用print函数 197
9.1.1 设置默认文件句柄 197
9.1.2 使用heredoc操作符 197
9.2 格式化输出 198
9.2.1 定义打印格式 199
9.2.2 显示打印格式 199
9.2.3 格式输出变量 200
9.2.4 特殊变量格式化 203
9.2.5 输出到文件 204
9.2.6 处理长字符串 205
9.3 使用打印格式函数 207
9.3.1 printf和sprintf函数 207
小结 210
第10章 正则表达式 211
10.1 概述 211
10.2 初识正则表达式 211
10.2.1 正则表达式模式匹配函数 211
10.2.2 匹配运算符 212
10.3 正则表达式功能 214
10.3.1 模式中的特殊字符 214
10.3.2 正则表达式中的元素 215
10.3.3 建立正则表达式 215
10.3.4 模式匹配变量 228
10.4 模式修饰符 229
10.4.1 全局匹配模式修饰符(g) 229
10.4.2 忽略大小写匹配(i) 231
10.4.3 多行和单行匹配 231
10.4.4 只执行一次变量替换 231
10.4.5 在模式中忽略空格 232
10.5 扩展模式匹配 233
10.5.1 不存储括号内的匹配内容 233
10.5.2 内嵌模式选项 233
10.5.3 肯定的和否定的预见匹配 233
10.5.4 模式注释 233
小结 234
第11章 包、库和模块 235
11.1 概述 235
11.2 程序包 235
11.2.1 包名字空间 235
11.2.2 包与包之间切换 236
11.2.3 非限定和完全限定包变量名 238
11.2.4 访问符号表 241
11.3 库和require语句 242
11.3.1 创建和使用库 242
11.3.2 require函数的使用 244
11.4 模块 245
11.4.1 创建模块 245
11.4.2 导入模块 246
11.4.3 预定义模块 249
小结 251
第12章 面向对象编程 252
12.1 概述 252
12.2 对象和类 253
12.2.1 对象和类 253
12.2.3 Perl中的类 253
12.3 对象方法 254
12.3.1 静态方法 254
12.3.2 构造函数 254
12.3.3 创建类 255
12.3.4 虚方法 257
12.4 对象变量 257
12.4.1 实例变量 258
12.4.2 析构函数 258
12.5 继承和重载 259
12.5.1 继承 259
12.5.2 子类方法的重载 262
12.5.3 Perl类和对象的一些注释 264
小结 264
附录A Perl 5内置变量 265
附录B 数字、字母与ASCⅡ码对照表 267
附录C 运算符优先次序与结合性 269
附录D 设置Web Server以运行CGI 271