• 第零章 Perl 前言
    • 1. 追求幸福
    • 2. 这个版本有什么新东西
    • 3. 标准的发布版
    • 4. 在线文档
    • 5. 阅读标准手册页
    • 6. 搜索手册页
    • 7. 非 Perl 手册页
    • 8. 离线文档
    • 9. 其它资源
      • 9.1 Web 上的 Perl
      • 9.2 Usenet 新闻组
    • 10. 臭虫报告
    • 11. 这本书里用的习惯
    • 12. 感谢
  • 第一章 Perl 概述
    • 1.1 从头开始
    • 1.2 自然语言与人工语言
      • 1.2.1 变量语法
      • 1.2.2 单数变量
      • 1.2.3 复数变量
      • 1.2.4 复杂数据结构
      • 1.2.5 简单数据结构
      • 1.2.6 动词
    • 1.3 一个平均值例子
      • 1.3.1 如何运行
    • 1.4 文件句柄
    • 1.5 操作符
      • 1.5.1 双目算术操作符
      • 1.5.2 字符串操作符
      • 1.5.3 赋值操作符
      • 1.5.4 单目算术操作符
      • 1.5.5 逻辑操作符
      • 1.5.6 比较操作符
      • 1.5.7 文件测试操作符
    • 1.6 流程控制
      • 1.6.1 什么是真
      • 1.6.2 If 和 unless 语句
      • 1.6.3 循环
        • 1.6.3.1 while 和 until 语句
        • 1.6.3.2 for 语句
        • 1.6.3.3 foreach 语句
        • 1.6.3.4 跳出控制结构: next 和 last
    • 1.7 正则表达式
      • 1.7.1 量词
      • 1.7.2 最小匹配
      • 1.7.3 把钉子敲牢
      • 1.7.4 反引用
    • 1.8 列表处理
    • 1.9 你不知道但不伤害你的东西(很多)
  • 第二章 集腋成裘
    • 2.1 原子
    • 2.2 分子
    • 2.3 内置的数据类型
    • 2.4 变量
    • 2.5 名字
      • 2.5.1 名字查找
    • 2.6 标量值
      • 2.6.1 数字文本
      • 2.6.2 字串文本
      • 2.6.3 选择自己的引号
      • 2.6.4 要么就完全不管引起
      • 2.6.5 代换数组数值
      • 2.6.6“此处”文档
      • 2.6.7 V-字串文本
      • 2.6.8 其他文本记号
    • 2.7 环境
      • 2.7.1 标量和列表环境
      • 2.7.2 布尔环境
      • 2.7.3 空(void)环境
      • 2.7.4 代换环境
    • 2.8 列表值和数组
      • 2.8.1 列表赋值
      • 2.7.6 数组长度
    • 2.9 散列
    • 2.10 型团(typeglob)和文件句柄
    • 2.11 输入操作符
      • 2.11.1 命令输入(反勾号)操作符
      • 2.11.2 行输入(尖角)操作符
      • 2.11.3 文件名聚集操作符
  • 第三章 单目和双目操作符
    • 3.1 项和列表操作符(左向)
    • 3.2 箭头操作符
    • 3.3 自增和自减操作符
    • 3.4 指数运算
    • 3.5 表意单目操作符
    • 3.6 绑定操作符
    • 3.7 乘号操作符
    • 3.8 附加操作符
    • 3.9 移位操作符
    • 3.10 命名单目操作符和文件测试操作符
    • 3.11 关系操作符
    • 3.12 相等操作符
    • 3.13 位操作符
    • 3.14 C 风格的逻辑(短路)操作符
    • 3.15 范围操作符
    • 3.16 条件操作符
    • 3.16 赋值操作符
    • 3.18 逗号操作符
    • 3.19 列表操作符(右向)
    • 3.20 逻辑与,或,非和异或
    • 3.21 Perl 里没有的 C 操作符
  • 第四章 语句和声明
    • 4.1简单语句
    • 4.2混合语句
      • 4.2.1 if 和 else 语句
    • 4.3 循环语句
      • 4.3.1 while 和 until 语句
      • 4.3.2 for循环
      • 4.3.3 foreach 循环
      • 4.3.4 循环控制
    • 4.4 光块
      • 4.4.1 分支(case)结构
    • 4.5 goto
    • 4.6 全局声明
    • 4.7 范围声明
      • 4.7.1 范围变量声明
      • 4.7.2 词法范围的变量:my
      • 4.7.3 词法范围全局声明:our
      • 4.7.4 动态范围变量:local
    • 4.8 用法(pragmas)
      • 4.8.1控制警告
      • 4.8.2 控制全局变量的使用
  • 第五章 模式匹配
    • 5.1 正则表达式箴言
    • 5.2 模式匹配操作符
      • 5.2.1 模式修饰词
      • 5.2.2 m// 操作符(匹配)
      • 5.2.3 s/// 操作符(替换)
        • 5.2.3.1 顺便修改一下字串
        • 5.2.3.2 当全局替换不够“全局”地时候
      • 5.2.4 tr/// 操作符(转换)
    • 5.3 元字符和元符号
      • 5.3.1 元字符表
      • 5.3.2 特定的字符
      • 5.3.3 通配元符号
    • 5.4 字符表
      • 5.4.1 客户化字符表
      • 5.4.2 典型 Perl 字符表缩写
      • 5.4.3 Unicode 属性
        • 5.4.3.1 Perl 的 Unicode 属性
        • 5.4.3.2 标准的 Unicode 属性
  • 第六章 子过程
    • 1.0 语法
    • 2.0 语意
      • 2.1 参数列表的技巧
      • 2.2 错误指示
      • 2.3 范围问题
    • 3.0 传入引用
    • 4.0 函数原型
      • 4.1 内联常量函数
      • 4.2 谨慎使用函数原型
    • 5.0 子过程属性
      • 5.1 Locked 和 method 属性
      • 5.3 左值属性
  • 第七章 格式
    • 7.1.0 格式变量
    • 7.2.0 页脚
      • 7.2.1 访问格式的内部
  • 第八章,引用
    • 8.1 什么是引用?
    • 8.2 创建引用
      • 8.2.1 反斜杠操作符
      • 8.2.2 匿名数据
        • 8.2.2.1 匿名数组组合器
        • 8.2.2.2 匿名散列组合器
        • 8.2.2.3 匿名子过程组合器
      • 8.2.3 对象构造器
      • 8.2.4 句柄引用
      • 8.2.5 符号表引用
      • 8.2.6 引用的隐含创建
    • 8.3 使用硬引用
    • 8.3.1 把一个变量当作变量名使用
    • 8.3.2 把一个 BLOCK 块当作变量名用
    • 8.3.3 使用箭头操作符
    • 8.3.4 使用对象方法
    • 8.3.5 伪散列
    • 8.3.6 硬引用可以用的其他技巧
    • 8.3.7 闭合(闭包)
      • 8.3.7.1 用闭合做函数模板
      • 8.3.7.2 嵌套的子过程
    • 8.4 符号引用
    • 8.5 花括弧,方括弧和引号
      • 8.5.1 引用不能当作散列键字用
      • 8.5.2 垃圾收集,循环引用和弱引用
  • 第九章,数据结构
    • 9.1 数组的数组
      • 9.1.1 创建和访问一个两维数组
      • 9.1.2 自行生长
      • 9.1.3 访问和打印
      • 9.1.4 片段
      • 9.1.5 常见错误
    • 9.2 数组的散列
      • 9.2.1 数组的散列的组成
      • 9.2.2 生成数组的散列
      • 9.2.3 访问和打印数组的散列
    • 9.3 散列的数组
      • 9.3.1 组成一个散列的数组
      • 9.3.2 生成散列的数组
      • 9.3.3 访问和打印散列的数组
    • 9.4 散列的散列
      • 9.4.1 构成一个散列的散列
      • 9.4.2 生成散列的散列
      • 9.4.3 访问和打印散列的散列
    • 9.5 函数的散列
    • 9.6 更灵活的记录
      • 9.6.1 更灵活的记录的组合,访问和打印
      • 9.6.2 甚至更灵活的记录的组合,访问和打印
      • 9.6.3 复杂记录散列的生成
    • 9.7 保存数据结构
  • 第十章 包
    • 10.1 符号表
    • 10.2 自动装载
  • 第十一章 模块
    • 11.1 使用模块
    • 11.2 创建模块
      • 11.2.1 模块私有和输出器
        • 11.2.1.1 不用 Exporter 的输入方法进行输出
        • 11.2.1.2 版本检查
        • 11.2.1.3 管理未知符号
        • 11.2.1.4 标签绑定工具函数
    • 11.3 覆盖内建的函数
  • 第十二章 对象(上)
    • 12.1 简单复习一下面向对象的语言
    • 12.2 Perl 的对象系统
    • 12.3 方法调用
      • 12.3.1 使用箭头操作符的方法调用
      • 12.3.2 使用间接对象的方法调用
      • 12.3.3 间接对象的句法障碍
      • 12.3.4 引用包的类
    • 12.4 构造对象
      • 12.4.1 可继承构造器
      • 12.4.2 初始器
    • 12.5 类继承
  • 第十二章 对象(下)
      • 12.5.1 通过 @ISA 继承
      • 12.5.2 访问被覆盖的方法
      • 12.5.3 UNIVERSAL:最终的祖先类
      • 12.5.4 方法自动装载
      • 12.5.5 私有方法
    • 12.6 实例析构器
      • 12.6.1 用 DESTROY 方法进行垃圾收集
    • 12.7 管理实例数据
      • 12.7.1 用 use fields 定义的域
      • 12.7.2 用 Class::Struct 生成类
      • 12.7.3使用 Autoloading(自动装载)生成指示器
      • 12.7.4 用闭合域生成指示器
      • 12.7.5 将闭合域用于私有对象
      • 12.7.6 新技巧
    • 12.8 管理类数据
    • 12.9 总结
  • 第十三章, 重载
    • 13.1 overload 用法
    • 13.3 可重载操作符
    • 13.4 拷贝构造器(=)
    • 13.5 当缺失重载句柄的时候(nomethod 和 fallback)
    • 13.6 重载常量
    • 13.7 公共重载函数
    • 13.8 继承和重载
    • 13.9 运行时重载
    • 13.10 重载诊断
  • 第十四章 捆绑(tie)变量
    • 14.1 捆绑标量
      • 14.1.1 标量捆绑方法
      • 14.1.2 魔术计数变量
      • 14.1.3 神奇地消除 $_
    • 14.2 捆绑数组
      • 14.2.1数组捆绑方法
      • 14.2.2 大家方便
  • 第十四章 捆绑(tie)变量(下)
    • 14.3 捆绑散列
      • 14.3.1散列捆绑方法
    • 14.4捆绑文件句柄
      • 14.4.1 文件句柄捆绑方法
      • 14.4.2创建文件句柄
    • 14.5 一个精细的松绑陷阱
    • 14.6 CPAN 里的模块
  • 第十五章 Unicode
    • 15.1 制作字符
    • 15.2 字符语意的效果
  • 第十六章,进程间通讯
    • 16.1 信号
      • 16.1.1 给进程组发信号
      • 16.1.2 收割僵死进程
      • 16.1.3 给慢速操作调速
      • 16.1.4 阻塞信号
    • 16.2 文件
      • 16.2.1 文件锁定
      • 16.2.2 传递文件句柄
    • 16.3 管道
      • 16.3.1 匿名管道
      • 16.3.2 自言自语
      • 16.3.3 双向通讯
      • 16.3.4 命名管道
    • 16.4. System V IPC
    • 16.5. 套接字
      • 16.5.1 网络客户端程序
      • 16.5.2 网络服务器
      • 16.5.3 消息传递
  • 第十七章,线程
    • 17.1 进程模型
    • 17.2 线程模型
      • 17.2.1 线程模块
        • 17.2.1.1 创建线程
        • 17.2.1.2 线程删除
        • 17.2.1.3 捕获来自 join 的例外
        • 17.2.1.4 detach 方法
        • 17.2.1.5 标识线程
        • 17.2.1.6 列出当前线程
        • 17.2.1.7 交出处理器
      • 17.2.2 数据访问
        • 17.2.2.1 用 lock 进行访问同步
        • 17.2.2.2 死锁
        • 17.2.2.3 锁定子过程
        • 17.2.2.4 locked 属性
        • 17.2.2.5. 锁定方法
        • 17.2.2.6 条件变量
      • 17.2.3 其他线程模块
        • 17.2.3.1 队列(queue)
        • 17.2.3.2. 信号灯
        • 17.2.3.3 其他标准线程模块
  • 第十八章 编译
    • 18.1. Perl 程序的生命周期
    • 18.2 编译你的代码
    • 18.3 执行你的代码
    • 18.4编译器后端
    • 18.5 代码生成器
      • 18.5.1 字节码生成器
      • 18.5.2. C 代码生成器
    • 18.7提前编译,回头解释
  • 第十九章,命令行接口
    • 19.1 命令行处理
    • 19.1.1 在非 Unix 系统上的 #! 和引号
    • 19.1.2 Perl 的位置
    • 19.1.3 开关
  • 19.2 环境变量
  • 第二十章 Perl 调试器
    • 20.1 使用调试器
    • 20.2 调试器命令
      • 20.2.1 部件和运行
      • 20.2.2. 断点
      • 20.2.3 跟踪
      • 20.2.4 显示
      • 20.2.5 定位代码
      • 20.2.6 动作和命令执行
      • 20.2.7 杂项命令
    • 20.3 客户化调试器
      • 20.3.1 调试器的编辑器支持
      • 20.3.2 用 init 文件进行客户化
      • 20.3.3 调试器选项
    • 20.4 不被注意的执行
    • 调试器支持
      • 20.5.1 书写你自己的调试器
    • 20.6 Perl 调节器
  • 第二十一章 内部和外部
  • 第二十二章 CPAN
  • 第二十三章 安全
    • 23.1 处理不安全数据
      • 23.1.1 侦测和消毒感染了的数据
      • 23.1.2. 清理你的环境
      • 23.1.3 在受限制的权限下访问命令和文件
    • 23.2. 处理计时缝隙
      • 23.2.1. Unix 内核安全臭虫
      • 23.2.2处理冲突条件
      • 23.2.3. 临时文件
    • 23.3 处理不安全的代码
      • 23.3.1.安全隔仓
        • 23.3.1.1. 限制名字空间访问
        • 23.3.1.2. 限制对操作符的访问
        • 23.3.1.3 安全例子
      • 23.3.2 伪装成数据的代码
  • 第二十四章,普通实践
    • 24.1. 新手常见错误
      • 24.1.1. 全局失误
      • 24.1.2. 常被遗忘的建议
      • 24.1.3. C 陷阱
      • 24.1.4. shell 陷阱
      • 24.1.5. 从前版本的 Perl 陷阱
    • 24.2 效率
    • 24.3 时间效率
      • 24.2.2. 空间效率
      • 24.2.3 程序员效率
      • 24.2.4 维护人员效率
      • 24.2.5. 移植人员效率
      • 24.2.6. 用户效率
    • 24.3有风格地编程
    • 24.4. 用 => 代替逗号,只要你认为这样可以改善可读性:
    • 24.5. 生成程序
      • 24.5.2 在其他语言里生成 Perl
      • 24.5.3. 源程序过滤器
  • 第二十五章,可移植的 Perl
    • 25.1. 换行
    • 25.2. 权重(字节序)和数字宽度
    • 25.3. 文件和文件系统
    • 25.6. 外部子过程(XS)
    • 25.7 标准模块
    • 25.8. 日期和时间
    • 25.9 国际化
    • 25.10. 风格
  • 第二十六章,简单旧文档
    • 26.1 pod in a NutShell
      • 26.1.1. 字面段落
      • 26.1.2. pod 指示符
      • 26.1.3 Pod 序列
  • ! /usr/bin/perl -l00n
  • olpod - outline pod
  • ! /usr/bin/perl -00
  • catpod - cat out just the pods
  • ! /usr/bin/perl -n00
  • podlit - print the indented literal blocks from pod input
  • ! /usr/bin/perl
  • catpod2, class and program
  • 第二十七章,Perl 文化
    • 27.1.时势造英雄
    • 27.2 Perl 诗歌
  • 第二十八章 特殊名字
  • 第二十九章,函数 (A-D)
    • 29.1 按类分的 Perl 函数
    • 29.2 按照字母顺序排列的 Perl 函数
  • 第二十九章,函数 (E-N)
    • 29.2 按照字母顺序排列的 Perl 函数
      • 29.2.30 each
      • 29.2.31 eof
      • 29.2.32 eval
      • 29.2.33 exec
      • 29.2.35 exists
      • 29.2.35 exit
      • 29.2.36 exp
      • 29.2.37. fcntl
      • 29.2.38 fileno
      • 29.2.39 flock
      • 29.2.40 fork
      • 29.2.41 format
      • 29.2.42 formline
      • 29.2.43 getc
      • 29.2.44 getgrent
      • 29.2.45 getgrgid
      • 29.2.46 getgrnam
      • 29.2.47 gethostbyaddr
      • 29.2.48 gethostbyname
      • 29.2.49 gethostent
      • 29.2.50. getlogin
      • 29.2.51 getnetbyaddr
      • 29.2.52 getnetbyname
      • 29.2.53. getnetent
      • 29.2.54. getpeername
      • 29.2.55. getpgrp
      • 29.2.56 getppid
      • 29.2.57. getpriority
      • 29.2.58 getprotobyname
      • 29.2.59 getprotobynumber
      • 29.2.60 getprotoent
      • 29.2.61 getpwent
      • 29.2.62 getpwnam
      • 29.2.63. getpwuid
      • 29.2.64. getservbyname
      • 29.2.65. getservbyport
      • 29.2.66. getservent
      • 29.2.67. getsockname
      • 29.2.68. getsockopt
      • 29.2.69 glob
      • 29.2.70. gmtime
      • 29.2.71. goto
      • 29.2.72. grep
      • 29.2.73. hex
      • 29.2.74 import
      • 29.2.75. index
      • 29.2.76. int
      • 29.2.77. ioctl
      • 29.2.78. join
      • 29.2.79 keys
      • 29.2.80. kill
      • 29.2.81. last
      • 29.2.82. lc
      • 29.2.83 lcfirst
      • 29.2.84. length
      • 29.2.85. link
      • 29.2.86. listen
      • 29.2.87. local
      • 29.2.88. localtime
      • 29.2.89 lock
      • 29.2.90. log
      • 29.2.91. lstat
      • 29.2.92. m//
      • 29.2.93. map
      • 29.2.94. mkdir
      • 29.2.95. msgctl
      • 29.2.96. msgget
      • 29.2.97. msgrcv
      • 29.2.98. msgsnd
      • 29.2.99. my
      • 29.2.100. new
      • 29.2.101. next
      • 29.2.102. no
  • 第二十九章,函数 (O-Y)
    • 29.2 按照字母顺序排列的 Perl 函数
      • 29.2.103. oct
      • 29.2.103 open
      • 29.2.105 opendir
      • 29.2.106 ord
      • 29.2.107 our
      • 29.2.108. pack
      • 29.2.109. package
      • 29.2.110 pipe
      • 29.2.111. pop
      • 29.2.112 pos
      • 29.2.113 print
      • 29.2.114 printf
      • 29.2.115. prototype
      • 29.2.116 push
      • 29.2.117. q/STRING/
      • 29.2.118. quotemeta
      • 29.2.119 rand
      • 29.2.120 read
      • 29.2.121. readdir
      • 29.2.122 readline
      • 29.2.123 readlink
      • 29.2.124. readpipe
      • 29.2.125 recv
      • 29.2.126 redo
      • 29.2.127 ref
      • 29.2.128 rename
      • 29.2.129 require
      • 29.2.130 reset
      • 29.2.131. return
      • 29.2.132 reverse
      • 29.2.133. rewinddir
      • 29.2.134. rindex
      • 29.2.135. rmdir
  • 第二十九章,函数 (S-Y)
    • 29.2 按照字母顺序排列的 Perl 函数.
      • 29.2.136 s///
      • 29.2.137. scalar
      • 29.2.138 seek
      • 29.2.139 seekdir
      • 29.2.140 select (输出文件句柄)
      • 29.2.141 select (准备文件描述符)
      • 29.2.142 semctl
      • 29.2.143 semget
      • 29.2.144 semop
      • 29.2.145 send
      • 29.2.146. setpgrp
      • 29.2.147. setpriority
      • 29.2.148. setsockopt
      • 29.2.149 shift
      • 29.2.150 shmctl
      • 29.2.151 shmget
      • 29.2.152 shmread
      • 29.2.153 shmwrite
      • 29.2.154 shutdown
      • 29.2.155. sin
      • 29.2.156 sleep
      • 29.2.157 socket
      • 29.2.158 socketpair
      • 29.2.159 sort
      • 29.2.160 splice
      • 29.2.161 spit
      • 29.2.162. sprintf
      • 29.2.163 sqrt
      • 29.2.164. srand
      • 29.2.165. stat
      • 29.2.166. study
      • 29.2.167 sub
      • 29.2.168. substr
      • 29.2.169. symlink
      • 29.2.170 syscall
      • 29.2.171 sysopen
      • 29.2.172 sysread
      • 29.2.173 sysseek
      • 29.2.174 system
      • 29.2.175 syswrite
      • 29.2.176 tell
      • 29.2.177. telldir
      • 29.2.177. tie
      • 29.2.179 tied
      • 29.2.180. time
      • 29.2.181 times
      • 29.2.182 tr///
      • 29.2.182 truncate
      • 29.2.183 uc
      • 29.2.184 ucfirst
      • 29.2.186 umask
      • 29.2.186 undef
      • 29.2.188. unlink
      • 29.2.189. unpack
      • 29.2.190. unshift
      • 29.2.190. untie
      • 29.2.190. use
      • 29.2.193 utime
      • 29.2.194. values
      • 29.2.195 vec
      • 29.2.196. wait
      • 29.2.197. waitpid
      • 29.2.198. wantarray
      • 29.2.199 warn
      • 29.2.200. write
      • 29.2.201 y//