Perl语言入门的好教程,大家看看
本书是第四版,自93 年以来,有超过50 万的读者喜欢它。至少,我们希望他们喜欢它。学习的好资料,希望对大家能有所帮助! 前言: .................................................................................................................................................................................................8 第一章概述..............................................................................................................................................................................................9 1.1 问题和解答............................................................... .....................................................................................................................9 1.1.1 本书适合你吗? .......................................................................................................................................................................................9 1.1.2 为什么如此多的脚注?............................................................................................................................................................................9 1.1.3 练习题和解答呢? .................................................................................................................................................................................10 1.1.4 习题前的数字是什么意思?.................................................................................................................................................................. 10 1.1.5 如果我是Perl 教师,怎么办呢? .........................................................................................................................................................10 1.2 Perl 代表什么? ....................................................................................................................................................................... 11 1.2.1 Larry 为什么发明Perl?......................................................................................................................................................................11 1.2.2 为什么Larry 不采用别的语言?........................................................................................................................................................... 11 1.2.3 Perl 容易学习吗?................................................................................................................................................................................... 12 1.2.4 Perl 为什么如此流行?...........................................................................................................................................................................13 1.2.5 Perl 正在发生怎样的事情?...................................................................................................................................................................13 1.2.6 Perl 擅长什么?....................................................................................................................................................................................... 13 1.2.7 Perl 不擅长什么?................................................................................................................................................................................... 14 1.3 怎样获得Perl? .........................................................................................................................................................................14 1.3.1 什么CPAN?.......................................................................................................................................................................................... 14 1.3.2 怎样获得支持? .....................................................................................................................................................................................15 1.3.3 有其它的支持吗? .................................................................................................................................................................................15 1.3.4 当发现Perl 中有错误时,该怎么办? .................................................................................................................................................16 1.4 怎样才能写一个Perl 程序?.....................................................................................................................................................16 1.4.1 一个简单的例子.....................................................................................................................................................................................17 1.4.2 这个程序有些什么? ............................................................................................................................................................................. 18 1.4.3 怎样编译Perl?....................................................................................................................................................................................... 19 1.5 快速了解Perl .............................................................................................................................................................................19 1.6 第六节练习................................................................................................................................................................................20 第二章标量数据......................................................................................................................................................................................21 2.1 数字............................................................................................................................................................................................. 21 2.1.1 所有数字内部的格式一致.......................................................................................................................................................................21 2.1.2 浮点数..................................................................................................................................................................................................... 21 2.1.3 整数......................................................................................................................................................................................................... 22 2.1.4 非十进制整数.......................................................................................................................................................................................... 22 2.1.5 数字操作符.............................................................................................................................................................................................. 23 2.2 字符串......................................................................................................................................................................................... 23 2.2.1 单引号字符串.......................................................................................................................................................................................... 24 2.2.2 双引号字符串.......................................................................................................................................................................................... 24 2.3.3 字符串操作符.......................................................................................................................................................................................... 25 2.2.4 数字和字符串之间的自动转换............................................................................................................................................................... 26 2.3 Perl 内嵌的警告(warnings)......................................................................................................................................................... 262.4 标量变量.....................................................................................................................................................................................27 2.4.1 选择好的变量名......................................................................................................................................................................................28 2.4.2 标量赋值.................................................................................................................................................................................................. 28 2.4.3 二元赋值操作符.....................................................................................................................................................................................29 2.5 print 输出.....................................................................................................................................................................................29 2.5.1 字符串中标量变量的内插.......................................................................................................................................................................30 2.5.2 操作符优先级和结合性...........................................................................................................................................................................31 2.5.3 比较运算符.............................................................................................................................................................................................. 32 2.6 if 控制结构...................................................................................................................................................................................33 2.6.Boolean 值...................................................................................................................................................................................................33 2.7 用户输入.....................................................................................................................................................................................34 2.8 chomp操作...................................................................................................................................................................................35 2.9 while 控制结构.............................................................................................................................................................................35 2.10 undef 值......................................................................................................................................................................................36 2.1.1 defined 函数...........................................................................................................................................................................37 2.1.2 练习.......................................................................................................................................................................................37 第三章列表和数组..................................................................................................................................................................................38 3.1 访问数组元素.............................................................................................................................................................................39 3.2 特殊的数组索引.........................................................................................................................................................................39 3.3 列表..............................................................................................................................................................................................40 3.3.1 qw 简写...................................................................................................................................................................................................41 3.4 列表赋值.....................................................................................................................................................................................42 3.4.1 pop 和push 操作......................................................................................................................................................................................43 3.4.2 shift 和unshift 操作.................................................................................................................................................................................44 3.5 将数组插入字符串...................................................................................................................................................................... 44 3.6 foreach 控制结构.........................................................................................................................................................................45 3.6.1 Perl 最常用的默认变量:$_...................................................................................................................................................................46 3.6.2 reverse 操作.............................................................................................................................................................................................. 46 3.6.3 sort 操作...................................................................................................................................................................................................47 3.7 标量和列表上下文...................................................................................................................................................................... 47 3.7.1 在标量Context 中使用List-Producing 表达式......................................................................................................................................48 3.7.2 在列表Context 中使用Scalar-Producing 表达式...................................................................................................................................50 3.7.3 强制转换为标量Context ........................................................................................................................................................................ 50 3.8在列表Context 中......................................................................................................................................................... 50 3.9 练习............................................................................................................................................................................................. 51 第四章子程序..........................................................................................................................................................................................53 4.1 定义一个子程序.........................................................................................................................................................................53 4.2 调用子程序.................................................................................................................................................................................54 4.3 返回值......................................................................................................................................................................................... 54 4.4 参数(Arguments) .........................................................................................................................................................................56 4.5 子程序中的私有变量.................................................................................................................................................................57 4.6 参数列表的长度.......................................................................................................................................................................... 57 4.6.1 更好的&max 程序..................................................................................................................................................................................58 4.6.2 空参数列表.............................................................................................................................................................................................. 594.7my 变量的注释..............................................................................................................................................................................59 4.8 使用strict Pragma .......................................................................................................................................................................60 4.9 返回操作.....................................................................................................................................................................................61 4.9.1 省略符号&.............................................................................................................................................................................................. 62 4.10 非标量返回值...........................................................................................................................................................................63 4.11 练习............................................................................................................................................................................................64 第五章输入与输出..................................................................................................................................................................................65 5.1 从标准输入设备输入.................................................................................................................................................................. 65 5.2 从输入.....................................................................................................................................................................................66 5.3 调用参数......................................................................................................................................................................................68 5.4 输出到标准输出设备.................................................................................................................................................................. 69 5.5 使用printf 格式化输出................................................................................................................................................................ 71 5.5.1 数组和printf ................................................................................................................................................................................................. 72 5.6 句柄..............................................................................................................................................................................................73 5.7 文件句柄的打开.......................................................................................................................................................................... 74 5.7.1 Bad 文件句柄........................................................................................................................................................................................... 76 5.7.2 关闭文件句柄.......................................................................................................................................................................................... 76 5.8 严重错误和die ...........................................................................................................................................................................77 5.8.1 警告信息和warn .................................................................................................................................................................................... 78 5.9 使用文件句柄..............................................................................................................................................................................78 5.9.1 改变默认的输出句柄..............................................................................................................................................................................79 5.10 重新打开文件句柄...................................................................................................................................................................79 5.11 练习........................................................................................................................................................................................... 80 第六章哈希........................................................................................................................................................................................... 81 6.1 什么是哈希? ..............................................................................................................................................................................81 6.1.1 为什么使用Hash? ..................................................................................................................................................................................82 6.2 哈希元素的存取.......................................................................................................................................................................... 84 6.2.1 作为整体的hash ......................................................................................................................................................................................85 6.2.2 Hash 赋值................................................................................................................................................................................................86 6.2.3 大箭头符号(=>).................................................................................................................................................................................87 6.3 哈希函数......................................................................................................................................................................................87 6.3.1 keys 和values 函数..................................................................................................................................................................................87 6.3.2 each 函数.................................................................................................................................................................................................. 88 6.4 哈希的通常用法.......................................................................................................................................................................... 89 6.4.1 exists 函数................................................................................................................................................................................................90 6.4.2 delete 函数................................................................................................................................................................................................90 6.4.3 hash 元素的内插......................................................................................................................................................................................90 6.5 练习..............................................................................................................................................................................................91 第七章正则表达式..................................................................................................................................................................................92 7.1 什么是正则表达式? .................................................................................................................................................................. 92 7.2 使用简单的模式.......................................................................................................................................................................... 93 7.2.1 元字符..................................................................................................................................................................................................... 93 7.2.2 简单的量词.............................................................................................................................................................................................94 7.2.3 模式中的分组.......................................................................................................................................................................................... 947.2.4 选择符..................................................................................................................................................................................................... 94 7.3 字符类..........................................................................................................................................................................................95 7.3.1 字符类的简写.......................................................................................................................................................................................... 95 7.3.2 简写形式的补集.....................................................................................................................................................................................96 7.4 练习..............................................................................................................................................................................................96 第八章正则表达式的应用...................................................................................................................................................................... 98 8.1 使用m//匹配...............................................................................................................................................................................98 8.2 可选的修饰符..............................................................................................................................................................................98 8.2.1 不区分大小写:/i .................................................................................................................................................................................... 98 8.2.2 匹配任何字符:/s.................................................................................................................................................................................... 99 8.2.3 添加空格:/x........................................................................................................................................................................................... 99 8.2.4 将可选字符结合起来...........................................................................................................................................................................100 8.2.5 其它选项................................................................................................................................................................................................100 8.3 锚定............................................................................................................................................................................................100 8.3.1 词锚定...................................................................................................................................................................................................101 8.4 绑定操作符,=~ .......................................................................................................................................................................101 8.5 模式内的内插...........................................................................................................................................................................102 8.6 匹配变量...................................................................................................................................................................................103 8.6.1 内存值的保存.......................................................................................................................................................................................104 8.6.2 自动匹配变量........................................................................................................................................................................................105 8.7 一般的数量词............................................................................................................................................................................ 106 8.8 优先级........................................................................................................................................................................................106 8.8.1 优先级练习............................................................................................................................................................................................107 8.8.2 更多........................................................................................................................................................................................................107 8.9 模式测试程序...........................................................................................................................................................................107 8.10 练习..........................................................................................................................................................................................108 第九章使用正则表达式处理文件........................................................................................................................................................109 9.1 使用s///进行替换...................................................................................................................................................................... 109 9.1.1 使用/g 进行全局替换............................................................................................................................................................................ 110 9.1.2 不同的分隔符........................................................................................................................................................................................ 110 9.1.3 可选的修饰符....................................................................................................................................................................................... 111 9.1.4 绑定操作............................................................................................................................................................................................... 111 9.1.5 大小写转换............................................................................................................................................................................................ 111 9.2split 操作..................................................................................................................................................................................... 112 9.3join 函数...................................................................................................................................................................................... 113 9.4 列表上下文中的m// ................................................................................................................................................................. 114 9.5 更强大的正则表达式................................................................................................................................................................ 114 9.5.1 非贪婪的数量词.................................................................................................................................................................................... 115 9.5.2 匹配多行文本....................................................................................................................................................................................... 116 9.5.3 更新大量文件........................................................................................................................................................................................ 117 9.5.4 在命令行中进行修改........................................................................................................................................................................... 119 9.5.5 非捕捉用的括号...................................................................................................................................................................................120 9.6 练习............................................................................................................................................................................................121 第十章更多控制结构............................................................................................................................................................................ 12210.1unless 控制结构........................................................................................................................................................................ 122 10.1.1unless 和else 语句一起使用................................................................................................................................................................122 10.2until控制结构...........................................................................................................................................................................123 10.3 表达式修饰符.......................................................................................................................................................................... 123 10.4The Naked Block 控制结构....................................................................................................................................................... 125 10.5 elsif 语句...................................................................................................................................................................................126 10.6 自增和自减..............................................................................................................................................................................126 10.6.1 自动增量的值......................................................................................................................................................................................127 10.7for 控制结构..............................................................................................................................................................................128 10.7.1foreach 和for 的关系............................................................................................................................................................................130 10.8 循环控制..................................................................................................................................................................................130 10.8.1 last 操作................................................................................................................................................................................................131 10.8.2 next 操作..............................................................................................................................................................................................131 10.8.3 redo 操作..............................................................................................................................................................................................132 10.8.4 标签块..................................................................................................................................................................................................133 10.9 逻辑操作符..............................................................................................................................................................................134 10.9.1 短路操作的值......................................................................................................................................................................................135 10.9.2 三元操作符?: .....................................................................................................................................................................................135 10.9.3 控制结构:使用部分求值的操作符...................................................................................................................................................136 10.10 练习........................................................................................................................................................................................138 第十一章文件检验................................................................................................................................................................................139 11.1 文件检测操作...........................................................................................................................................................................139 11.2 stat 和lstat 函数.......................................................................................................................................................................142 11.3 localtime 函数...........................................................................................................................................................................143 11.4 位操作....................................................................................................................................................................................... 144 11.4.1 使用位串..............................................................................................................................................................................................145 11.5 使用特殊的下划线文件句柄...................................................................................................................................................145 11.6 练习..........................................................................................................................................................................................146 第十二章目录操作................................................................................................................................................................................147 12.1 在目录树上移动...................................................................................................................................................................... 147 12.2 Globbing...................................................................................................................................................................................147 12.3 Globbing 的替换语法..............................................................................................................................................................148 12.4 目录句柄..................................................................................................................................................................................149 12.5 递归的目录列表...................................................................................................................................................................... 151 12.6 操作文件和目录...................................................................................................................................................................... 151 12.7 删除文件..................................................................................................................................................................................151 12.8 重命名文件..............................................................................................................................................................................152 12.9 连接和文件..............................................................................................................................................................................153 12.10 创建和删除目录.................................................................................................................................................................... 157 12.11 修改权限.................................................................................................................................................................................159 12.12 改变所有者............................................................................................................................................................................ 159 12.13 改变时间戳............................................................................................................................................................................ 159 12.14 练习........................................................................................................................................................................................160 第十三章字符串和排序........................................................................................................................................................................ 16113.1 使用索引寻找子串.................................................................................................................................................................. 161 13.2 使用substr操作子串............................................................................................................................................................... 162 13.3 使用sprintf 格式化数据..........................................................................................................................................................163 13.3.1 在“货币数字”中使用sprintf ...........................................................................................................................................................164 13.4 高级排序..................................................................................................................................................................................165 13.4.1 依据值对Hash 进行排序....................................................................................................................................................................168 13.4.2 对多个keys 排序.................................................................................................................................................................................168 13.5 练习..........................................................................................................................................................................................169 第十四章进程管理................................................................................................................................................................................171 14.1 系统函数..................................................................................................................................................................................171 14.1.1 避免Shell.............................................................................................................................................................................................172 14.2exec 函数...................................................................................................................................................................................174 14.3 环境变量..................................................................................................................................................................................174 14.4 使用反引号捕捉输出..............................................................................................................................................................175 14.4.1 在List context 中使用反引号..............................................................................................................................................................177 14.5 像文件句柄那样处理..............................................................................................................................................................178 14.6 使用fork...................................................................................................................................................................................179 14.7 发送和接收信号...................................................................................................................................................................... 180 14.8 练习..........................................................................................................................................................................................182 第十五章PERL 模块...............................................................................................................................................................................183 15.1 查找模块..................................................................................................................................................................................183 15.2 安装模块..................................................................................................................................................................................183 15.3 使用简单的模块...................................................................................................................................................................... 184 15.3.1. File::Basename 模块........................................................................................................................................................................185 15.3.2.仅使用模块中的一些函数................................................................................................................................................................186 15.3.3.File::Spec 模块..................................................................................................................................................................................187 15.3.4.CGI.pm ..............................................................................................................................................................................................188 15.3.5.数据库和DBI ......................................................................................................................................................................................189 15.4 练习..........................................................................................................................................................................................190 第十六章一些高级的PERL 技术..........................................................................................................................................................191 16.1 利用eval 捕获错误.................................................................................................................................................................. 191 16.2 使用grep 在列表得到元素.....................................................................................................................................................193 16.3 使用map 对列表项进行变换..................................................................................................................................................194 16.4 不用双引号的hash keys ..........................................................................................................................................................195 16.5Slices..........................................................................................................................................................................................195 16.5.1 Array Slice............................................................................................................................................................................................197 16.5.2Hash Slice..............................................................................................................................................................................................198 16.6 练习..........................................................................................................................................................................................200 练习题答案............................................................................................................................................................................................. 201 .....................................................................................................................9 1.1.1 本书适合你吗? .......................................................................................................................................................................................9 1.1.2 为什么如此多的脚注?............................................................................................................................................................................9 1.1.3 练习题和解答呢? .................................................................................................................................................................................10 1.1.4 习题前的数字是什么意思?.................................................................................................................................................................. 10 1.1.5 如果我是Perl 教师,怎么办呢? .........................................................................................................................................................10 1.2 Perl 代表什么? ....................................................................................................................................................................... 11 1.2.1 Larry 为什么发明Perl?......................................................................................................................................................................11 1.2.2 为什么Larry 不采用别的语言?........................................................................................................................................................... 11 1.2.3 Perl 容易学习吗?................................................................................................................................................................................... 12 1.2.4 Perl 为什么如此流行?...........................................................................................................................................................................13 1.2.5 Perl 正在发生怎样的事情?...................................................................................................................................................................13 1.2.6 Perl 擅长什么?....................................................................................................................................................................................... 13 1.2.7 Perl 不擅长什么?................................................................................................................................................................................... 14 1.3 怎样获得Perl? .........................................................................................................................................................................14 1.3.1 什么CPAN?.......................................................................................................................................................................................... 14 1.3.2 怎样获得支持? .....................................................................................................................................................................................15 1.3.3 有其它的支持吗? .................................................................................................................................................................................15 1.3.4 当发现Perl 中有错误时,该怎么办? .................................................................................................................................................16 1.4 怎样才能写一个Perl 程序?.....................................................................................................................................................16 1.4.1 一个简单的例子.....................................................................................................................................................................................17 1.4.2 这个程序有些什么? ............................................................................................................................................................................. 18 1.4.3 怎样编译Perl?....................................................................................................................................................................................... 19 1.5 快速了解Perl .............................................................................................................................................................................19 1.6 第六节练习................................................................................................................................................................................20 第二章标量数据......................................................................................................................................................................................21 2.1 数字............................................................................................................................................................................................. 21 2.1.1 所有数字内部的格式一致.......................................................................................................................................................................21 2.1.2 浮点数..................................................................................................................................................................................................... 21 2.1.3 整数......................................................................................................................................................................................................... 22 2.1.4 非十进制整数.......................................................................................................................................................................................... 22 2.1.5 数字操作符.............................................................................................................................................................................................. 23 2.2 字符串......................................................................................................................................................................................... 23 2.2.1 单引号字符串.......................................................................................................................................................................................... 24 2.2.2 双引号字符串.......................................................................................................................................................................................... 24 2.3.3 字符串操作符.......................................................................................................................................................................................... 25 2.2.4 数字和字符串之间的自动转换............................................................................................................................................................... 26 2.3 Perl 内嵌的警告(warnings)......................................................................................................................................................... 262.4 标量变量.....................................................................................................................................................................................27 2.4.1 选择好的变量名......................................................................................................................................................................................28 2.4.2 标量赋值.................................................................................................................................................................................................. 28 2.4.3 二元赋值操作符.....................................................................................................................................................................................29 2.5 print 输出.....................................................................................................................................................................................29 2.5.1 字符串中标量变量的内插.......................................................................................................................................................................30 2.5.2 操作符优先级和结合性...........................................................................................................................................................................31 2.5.3 比较运算符.............................................................................................................................................................................................. 32 2.6 if 控制结构...................................................................................................................................................................................33 2.6.Boolean 值...................................................................................................................................................................................................33 2.7 用户输入.....................................................................................................................................................................................34 2.8 chomp操作...................................................................................................................................................................................35 2.9 while 控制结构.............................................................................................................................................................................35 2.10 undef 值......................................................................................................................................................................................36 2.1.1 defined 函数...........................................................................................................................................................................37 2.1.2 练习.......................................................................................................................................................................................37 第三章列表和数组..................................................................................................................................................................................38 3.1 访问数组元素.............................................................................................................................................................................39 3.2 特殊的数组索引.........................................................................................................................................................................39 3.3 列表..............................................................................................................................................................................................40 3.3.1 qw 简写...................................................................................................................................................................................................41 3.4 列表赋值.....................................................................................................................................................................................42 3.4.1 pop 和push 操作......................................................................................................................................................................................43 3.4.2 shift 和unshift 操作.................................................................................................................................................................................44 3.5 将数组插入字符串...................................................................................................................................................................... 44 3.6 foreach 控制结构.........................................................................................................................................................................45 3.6.1 Perl 最常用的默认变量:$_...................................................................................................................................................................46 3.6.2 reverse 操作.............................................................................................................................................................................................. 46 3.6.3 sort 操作...................................................................................................................................................................................................47 3.7 标量和列表上下文...................................................................................................................................................................... 47 3.7.1 在标量Context 中使用List-Producing 表达式......................................................................................................................................48 3.7.2 在列表Context 中使用Scalar-Producing 表达式...................................................................................................................................50 3.7.3 强制转换为标量Context ........................................................................................................................................................................ 50 3.8在列表Context 中......................................................................................................................................................... 50 3.9 练习............................................................................................................................................................................................. 51 第四章子程序..........................................................................................................................................................................................53 4.1 定义一个子程序.........................................................................................................................................................................53 4.2 调用子程序.................................................................................................................................................................................54 4.3 返回值......................................................................................................................................................................................... 54 4.4 参数(Arguments) .........................................................................................................................................................................56 4.5 子程序中的私有变量.................................................................................................................................................................57 4.6 参数列表的长度.......................................................................................................................................................................... 57 4.6.1 更好的&max 程序..................................................................................................................................................................................58 4.6.2 空参数列表.............................................................................................................................................................................................. 594.7my 变量的注释..............................................................................................................................................................................59 4.8 使用strict Pragma .......................................................................................................................................................................60 4.9 返回操作.....................................................................................................................................................................................61 4.9.1 省略符号&.............................................................................................................................................................................................. 62 4.10 非标量返回值...........................................................................................................................................................................63 4.11 练习............................................................................................................................................................................................64 第五章输入与输出..................................................................................................................................................................................65 5.1 从标准输入设备输入.................................................................................................................................................................. 65 5.2 从输入.....................................................................................................................................................................................66 5.3 调用参数......................................................................................................................................................................................68 5.4 输出到标准输出设备.................................................................................................................................................................. 69 5.5 使用printf 格式化输出................................................................................................................................................................ 71 5.5.1 数组和printf ................................................................................................................................................................................................. 72 5.6 句柄..............................................................................................................................................................................................73 5.7 文件句柄的打开.......................................................................................................................................................................... 74 5.7.1 Bad 文件句柄........................................................................................................................................................................................... 76 5.7.2 关闭文件句柄.......................................................................................................................................................................................... 76 5.8 严重错误和die ...........................................................................................................................................................................77 5.8.1 警告信息和warn .................................................................................................................................................................................... 78 5.9 使用文件句柄..............................................................................................................................................................................78 5.9.1 改变默认的输出句柄..............................................................................................................................................................................79 5.10 重新打开文件句柄...................................................................................................................................................................79 5.11 练习........................................................................................................................................................................................... 80 第六章哈希........................................................................................................................................................................................... 81 6.1 什么是哈希? ..............................................................................................................................................................................81 6.1.1 为什么使用Hash? ..................................................................................................................................................................................82 6.2 哈希元素的存取.......................................................................................................................................................................... 84 6.2.1 作为整体的hash ......................................................................................................................................................................................85 6.2.2 Hash 赋值................................................................................................................................................................................................86 6.2.3 大箭头符号(=>).................................................................................................................................................................................87 6.3 哈希函数......................................................................................................................................................................................87 6.3.1 keys 和values 函数..................................................................................................................................................................................87 6.3.2 each 函数.................................................................................................................................................................................................. 88 6.4 哈希的通常用法.......................................................................................................................................................................... 89 6.4.1 exists 函数................................................................................................................................................................................................90 6.4.2 delete 函数................................................................................................................................................................................................90 6.4.3 hash 元素的内插......................................................................................................................................................................................90 6.5 练习..............................................................................................................................................................................................91 第七章正则表达式..................................................................................................................................................................................92 7.1 什么是正则表达式? .................................................................................................................................................................. 92 7.2 使用简单的模式.......................................................................................................................................................................... 93 7.2.1 元字符..................................................................................................................................................................................................... 93 7.2.2 简单的量词.............................................................................................................................................................................................94 7.2.3 模式中的分组.......................................................................................................................................................................................... 947.2.4 选择符..................................................................................................................................................................................................... 94 7.3 字符类..........................................................................................................................................................................................95 7.3.1 字符类的简写.......................................................................................................................................................................................... 95 7.3.2 简写形式的补集.....................................................................................................................................................................................96 7.4 练习..............................................................................................................................................................................................96 第八章正则表达式的应用...................................................................................................................................................................... 98 8.1 使用m//匹配...............................................................................................................................................................................98 8.2 可选的修饰符..............................................................................................................................................................................98 8.2.1 不区分大小写:/i .................................................................................................................................................................................... 98 8.2.2 匹配任何字符:/s.................................................................................................................................................................................... 99 8.2.3 添加空格:/x........................................................................................................................................................................................... 99 8.2.4 将可选字符结合起来...........................................................................................................................................................................100 8.2.5 其它选项................................................................................................................................................................................................100 8.3 锚定............................................................................................................................................................................................100 8.3.1 词锚定...................................................................................................................................................................................................101 8.4 绑定操作符,=~ .......................................................................................................................................................................101 8.5 模式内的内插...........................................................................................................................................................................102 8.6 匹配变量...................................................................................................................................................................................103 8.6.1 内存值的保存.......................................................................................................................................................................................104 8.6.2 自动匹配变量........................................................................................................................................................................................105 8.7 一般的数量词............................................................................................................................................................................ 106 8.8 优先级........................................................................................................................................................................................106 8.8.1 优先级练习............................................................................................................................................................................................107 8.8.2 更多........................................................................................................................................................................................................107 8.9 模式测试程序...........................................................................................................................................................................107 8.10 练习..........................................................................................................................................................................................108 第九章使用正则表达式处理文件........................................................................................................................................................109 9.1 使用s///进行替换...................................................................................................................................................................... 109 9.1.1 使用/g 进行全局替换............................................................................................................................................................................ 110 9.1.2 不同的分隔符........................................................................................................................................................................................ 110 9.1.3 可选的修饰符....................................................................................................................................................................................... 111 9.1.4 绑定操作............................................................................................................................................................................................... 111 9.1.5 大小写转换............................................................................................................................................................................................ 111 9.2split 操作..................................................................................................................................................................................... 112 9.3join 函数...................................................................................................................................................................................... 113 9.4 列表上下文中的m// ................................................................................................................................................................. 114 9.5 更强大的正则表达式................................................................................................................................................................ 114 9.5.1 非贪婪的数量词.................................................................................................................................................................................... 115 9.5.2 匹配多行文本....................................................................................................................................................................................... 116 9.5.3 更新大量文件........................................................................................................................................................................................ 117 9.5.4 在命令行中进行修改........................................................................................................................................................................... 119 9.5.5 非捕捉用的括号...................................................................................................................................................................................120 9.6 练习............................................................................................................................................................................................121 第十章更多控制结构............................................................................................................................................................................ 12210.1unless 控制结构........................................................................................................................................................................ 122 10.1.1unless 和else 语句一起使用................................................................................................................................................................122 10.2until控制结构...........................................................................................................................................................................123 10.3 表达式修饰符.......................................................................................................................................................................... 123 10.4The Naked Block 控制结构....................................................................................................................................................... 125 10.5 elsif 语句...................................................................................................................................................................................126 10.6 自增和自减..............................................................................................................................................................................126 10.6.1 自动增量的值......................................................................................................................................................................................127 10.7for 控制结构..............................................................................................................................................................................128 10.7.1foreach 和for 的关系............................................................................................................................................................................130 10.8 循环控制..................................................................................................................................................................................130 10.8.1 last 操作................................................................................................................................................................................................131 10.8.2 next 操作..............................................................................................................................................................................................131 10.8.3 redo 操作..............................................................................................................................................................................................132 10.8.4 标签块..................................................................................................................................................................................................133 10.9 逻辑操作符..............................................................................................................................................................................134 10.9.1 短路操作的值......................................................................................................................................................................................135 10.9.2 三元操作符?: .....................................................................................................................................................................................135 10.9.3 控制结构:使用部分求值的操作符...................................................................................................................................................136 10.10 练习........................................................................................................................................................................................138 第十一章文件检验................................................................................................................................................................................139 11.1 文件检测操作...........................................................................................................................................................................139 11.2 stat 和lstat 函数.......................................................................................................................................................................142 11.3 localtime 函数...........................................................................................................................................................................143 11.4 位操作....................................................................................................................................................................................... 144 11.4.1 使用位串..............................................................................................................................................................................................145 11.5 使用特殊的下划线文件句柄...................................................................................................................................................145 11.6 练习..........................................................................................................................................................................................146 第十二章目录操作................................................................................................................................................................................147 12.1 在目录树上移动...................................................................................................................................................................... 147 12.2 Globbing...................................................................................................................................................................................147 12.3 Globbing 的替换语法..............................................................................................................................................................148 12.4 目录句柄..................................................................................................................................................................................149 12.5 递归的目录列表...................................................................................................................................................................... 151 12.6 操作文件和目录...................................................................................................................................................................... 151 12.7 删除文件..................................................................................................................................................................................151 12.8 重命名文件..............................................................................................................................................................................152 12.9 连接和文件..............................................................................................................................................................................153 12.10 创建和删除目录.................................................................................................................................................................... 157 12.11 修改权限.................................................................................................................................................................................159 12.12 改变所有者............................................................................................................................................................................ 159 12.13 改变时间戳............................................................................................................................................................................ 159 12.14 练习........................................................................................................................................................................................160 第十三章字符串和排序........................................................................................................................................................................ 16113.1 使用索引寻找子串.................................................................................................................................................................. 161 13.2 使用substr操作子串............................................................................................................................................................... 162 13.3 使用sprintf 格式化数据..........................................................................................................................................................163 13.3.1 在“货币数字”中使用sprintf ...........................................................................................................................................................164 13.4 高级排序..................................................................................................................................................................................165 13.4.1 依据值对Hash 进行排序....................................................................................................................................................................168 13.4.2 对多个keys 排序.................................................................................................................................................................................168 13.5 练习..........................................................................................................................................................................................169 第十四章进程管理................................................................................................................................................................................171 14.1 系统函数..................................................................................................................................................................................171 14.1.1 避免Shell.............................................................................................................................................................................................172 14.2exec 函数...................................................................................................................................................................................174 14.3 环境变量..................................................................................................................................................................................174 14.4 使用反引号捕捉输出..............................................................................................................................................................175 14.4.1 在List context 中使用反引号..............................................................................................................................................................177 14.5 像文件句柄那样处理..............................................................................................................................................................178 14.6 使用fork...................................................................................................................................................................................179 14.7 发送和接收信号...................................................................................................................................................................... 180 14.8 练习..........................................................................................................................................................................................182 第十五章PERL 模块...............................................................................................................................................................................183 15.1 查找模块..................................................................................................................................................................................183 15.2 安装模块..................................................................................................................................................................................183 15.3 使用简单的模块...................................................................................................................................................................... 184 15.3.1. File::Basename 模块........................................................................................................................................................................185 15.3.2.仅使用模块中的一些函数................................................................................................................................................................186 15.3.3.File::Spec 模块..................................................................................................................................................................................187 15.3.4.CGI.pm ..............................................................................................................................................................................................188 15.3.5.数据库和DBI ......................................................................................................................................................................................189 15.4 练习..........................................................................................................................................................................................190 第十六章一些高级的PERL 技术..........................................................................................................................................................191 16.1 利用eval 捕获错误.................................................................................................................................................................. 191 16.2 使用grep 在列表得到元素.....................................................................................................................................................193 16.3 使用map 对列表项进行变换..................................................................................................................................................194 16.4 不用双引号的hash keys ..........................................................................................................................................................195 16.5Slices..........................................................................................................................................................................................195 16.5.1 Array Slice............................................................................................................................................................................................197 16.5.2Hash Slice..............................................................................................................................................................................................198 16.6 练习..........................................................................................................................................................................................200 练习题答案............................................................................................................................................................................................. 201
用户评论