Perl 進階, 2/e Intermediate Perl, 2/e

[美]蘭德爾 L. 施瓦茨(Randal L. Schwartz) 布萊恩 d. 福瓦(brian d foy)、湯姆 菲尼克斯(Tom Phoenix)

  • Perl 進階, 2/e-preview-1
Perl 進階, 2/e-preview-1

商品描述

Perl是一種功能強大的編程語言,享有“一種擁有各種語言功能的夢幻腳本語言”、“UNIX中的王 牌工具”等美譽,受到了國內程序員和系統管理員的青睞。

《Perl進階(第 2版)》作為Learning Perl一書的進階,主要講解瞭如何更加有效地利用Perl進行開發。本書總共分為21章,每章內容篇幅不大,主要內容包括Perl簡介、使用模塊、中級操作基礎、引用簡介、引用和作用域、操作復雜的數據結構、對子例程的引用、文件句柄引用、正則表達式引用、構建更大型的程序、創建自己的Perl發行版、對象簡介、測試簡介、帶數據的對象、Exporter模塊、對象析構、Moose簡介、高 級測試、為CPAN貢獻代碼等知識。

《Perl進階(第 2版)》適合具有一定Perl基礎的程序員和系統管理員閱讀。對於高 級Perl程序員來講,《Perl進階(第 2版)》也是技術參考讀物。

作者簡介

Randal L. Schwartz是一位Perl编程语言专家。除了写作了Learning Perl以及Programming Perl的前两版之外,他还是UNIX Review、Web Techniques、Sys Admin以及Linux Magazine的Perl专栏作家。他对十多本Perl图书以及200多篇杂志文章做出了贡献。Randal还经营着一家Perl培训和咨询公司(Stonehenge咨询服务公司),并且凭借着其技术技能、善于互动被公认为Perl的发言人。他还是一位相当有水准的K歌歌手。

 

brain d foy自从1998年起担任Stonehenge咨询服务公司的一名讲师,自从他成为物理系的研究生起就是一名Perl用户,而且自从他拥有了电脑之后,就成了一名Mac的铁杆用户。他成立了Perl用户组——New York Perl Mongers,还成立了非盈利的Perl Mongers公司,该公司帮助形成了全球200多个Perl用户组。他是Perl核心文档perlfaq部分的维护人,还维护着CPAN的多个模块以及一些独立的脚本文件。他是The Perl Review(一家致力于Perl的杂志)的出版人,并经常在各种会议(包括Perl Conference、Perl University、MaccusEvans BioInformatics’ 02和YAPC)上发表演讲。他写作的Perl作品可以在O’Reilly Network、The Perl Journal、Dr. Dobbs、The Perl Review、use.perl.org以及多个Perl新闻组上找到。

 

Tom Phoenix自从1982年起投身于教育领域,在科学博物馆工作的13多年里,他经历了解剖、爆炸、与有趣的小动物共事,以及冒着火花的高压电等事情,然后从1996年起加入了Stonehenge咨询服务公司,并讲授Perl课程。从那时起,他去过了很多有趣的地方,没准你不久之后便会在Perl Mongers的会议上见到他。当他有空闲时,会在comp.lang.perl.misc和comp.lang.perl.moderated新闻组上回答问题,而且为Perl的发展和使用贡献颇多。除了Perl、Perl破解以及相关主题的工作之外,Tom还在业余密码学和讲世界语方面投入了很多时间。Tom住在俄勒冈州波特兰市。

目錄大綱

目錄

 

第 1章 簡介 1

1.1 背景知識 2

1.2 strict和warnings 2

1.3 Perl v5.14 3

1.4 關於這些腳註 4

1.5 關於後續的練習 4

1.6 獲取幫助的方式 5

1.7 如果是一個Perl課程講師 5

1.8 練習 6

第 2章 使用模塊 7

2.1 標準發行版 7

2.2 探討CPAN 8

2.3 使用模塊 9

2.4 功能接口 10

2.5 面向對象的接口 11

2.5.1 一個更典型的面向對象模塊:Math::BigInt 12

2.5.2 更佳的模塊輸出 13

2.6 核心模塊的內容 14

2.7 Perl綜合典藏網 15

2.8 通過CPAN安裝模塊 16

2.8.1 CPANminus 16

2.8.2 手動安裝模塊 17

2.9 適時設定路徑 18

2.10 在程序外部設定路徑 20

2.10.1 使用PERL5LIB擴展@INC 20

2.10.2 在命令行擴展@INC目錄 21

2.11 local::lib 21

2.12 練習 23

第3章 中級基礎 24

3.1 列表操作符 24

3.1.1 使用grep表達式過濾列表 25

3.1.2 使用map轉換列表 27

3.2 使用eval捕獲錯誤 28

3.3 用eval語句塊動態編譯代碼 30

3.4 使用do語句塊 31

3.5 練習 32

第4章 引用簡介 33

4.1 在多個數組上完成相同的任務 33

4.2 PeGS:Perl圖形結構 35

4.3 對數組取引用 36

4.4 對數組引用進行解引用操作 38

4.5 去除大括號 40

4.6 修改數組 40

4.7 嵌套的數據結構 41

4.8 用箭頭簡化嵌套元素的引用 43

4.9 散列的引用 44

4.10 檢查引用類型 47

4.11 練習 49

第5章 引用和作用域 51

5.1 關於數據引用的更多信息 51

5.2 如果它曾是變量名將會怎樣 52

5.3 引用計數和嵌套數據結構 53

5.4 當引用計數出現問題時 55

5.5 直接創建匿名數組 57

5.6 創建匿名散列 59

5.7 自動帶入 61

5.8 自動帶入和散列 63

5.9 練習 65

第6章 操作復雜的數據結構 67

6.1 使用調試器查看復雜的數據 67

6.2 使用Data::Dumper模塊查看復雜的數據 71

6.3 數據編組 74

6.3.1 使用Storable模塊對復雜數據排序 75

6.3.2 YAML模塊 80

6.3.3 JSON模塊 81

6.4 使用map和grep操作符 81

6.5 應用一點間接方法 81

6.6 選擇和改變復雜數據 83

6.7 練習 84

第7章 對子例程的引用 86

7.1 對命名子例程的引用 86

7.2 匿名子例程 90

7.3 回調 92

7.4 閉包 93

7.5 從一個子例程返回另一個子例程 94

7.6 作為輸入參數的閉包變量 97

7.7 閉包變量作為靜態局部變量 98

7.8 查詢我們自己的身份 101

7.8.1 令人著迷的子例程 102

7.8.2 轉儲閉包 105

7.9 練習 105

第8章 文件句柄引用 107

8.1 舊方法 107

8.2 改進的方法 108

8.3 指向字符串的文件句柄 110

8.4 文件句柄集合 111

8.5 IO::Handle模塊和其他相應的模塊 112

8.5.1 IO::File模塊 113

8.5.2 IO::Scalar模塊 114

8.5.3 IO::Tee模塊 115

8.5.4 IO::Pipe模塊 116

8.5.5 IO::Null模塊和IO::Interactive模塊 117

8.6 目錄句柄 117

8.7 練習 118

第9章 正則表達式引用 120

9.1 正則表達式引用之前 120

9.2 預編譯模式 122

9.2.1 正則表達式選項 123

9.2.2 應用正則表達式引用 123

9.3 作為標量的正則表達式 124

9.4 建立正則表達式 126

9.5 創建正則表達式的模塊 128

9.5.1 使用常見的模式 128

9.5.2 組裝正則表達式 129

9.6 練習 130

第 10章 實用的引用技巧 132

10.1更佳的輸出 132

10.2 用索引排序 134

10.3 更為高效的排序 135

10.4 施瓦茨變換 136

10.5 使用施瓦茨變換實現多級排序 137

10.6 遞歸定義的數據 138

10.7 構建遞歸定義的數據 139

10.8 顯示遞歸定義的數據 142

10.9 避免遞歸 143

10.10 練習 146

第 11章 構建更大型的程序 148

11.1 修改通用代碼 148

11.2 使用eval插入代碼 149

11.3 使用do語句 150

11.4 使用require語句 151

11.5 命名空間沖突的問題 153

11.6 使用包作為命名空間分隔符 154

11.7 Package指令的作用域 156

11.8 包和專門詞匯 157

11.9 練習 159

第 12章 創建你自己的發行版 160

12.1 Perl模塊的兩個構建系統 160

12.1.1 在Makefile.PL內部 161

12.1.2 在Build.PL文件內部 162

12.2 我們的第 一個發行版 163

12.2.1 h2xs工具 163

12.2.2 Module::Starter模塊 164

12.2.3 定製模版 165

12.3 在你的發行版內部 165

12.3.1 META文件 167

12.3.2 添加額外的模塊 168

12.4 模塊內部 169

12.5 老式文檔 171

12.5.1 段落的Pod命令 172

12.5.2 Pod段落 172

12.5.3 Pod格式標記 173

12.5.4 檢查Pod格式 174

12.6 模塊中的代碼 174

12.7 模塊構建的總結 175

12.7.1 創建基於Module::Build模塊的發行版 175

12.7.2 創建ExtUtils::Makemaker發行版 176

12.8 練習 176

第 13章 對象簡介 177

13.1 如果我們可以和動物對話 177

13.2 介紹方法的調用箭頭 179

13.3 方法調用的額外參數 180

13.4 調用第 二個方法進一步簡化 181

13.5 關於@ISA的幾個註意事項 183

13.6 方法重寫 184

13.7 開始從不同的地方查找 186

13.8 使用SUPER的實現方法 186

13.9 要對@_做些什麽 187

13.10 我們在哪裡 187

13.11 牧場總結 187

13.12 練習 189

第 14章 測試簡介 190

14.1 為什麽需要測試 190

14.2 Perl的測試流程 191

14.3 測試的藝術 193

14.4 測試用具 195

14.5 標準測試 195

14.5.1 模塊編譯的檢查 196

14.5.2 模板測試 198

14.5.3 測試Pod 200

14.6 添加第 一個測試 201

14.7 測量測試覆蓋率 204

14.7.1 子例程覆蓋率 205

14.7.2 語句覆蓋率 205

14.7.3 分支覆蓋率 205

14.7.4 條件覆蓋率 206

14.8 練習 206

第 15章 帶數據的對象 208

15.1 馬屬於馬類,各從其類是嗎 208

15.2 調用實例方法 210

15.3 訪問實例數據 211

15.4 如何構建Horse的實例 211

15.5 繼承構造函數 212

15.6 編寫能夠使用類或實例作為參數的方法 213

15.7 為方法添加參數 213

15.8 更有趣的實例 214

15.9 一匹不同顏色的馬 215

15.10 收回存款 216

15.11 不要查看“盒子”裡面的內容 217

15.12 更快的setter和getter 218

15.13 getter作為雙倍的setter 219

15.14 僅僅 限制一個類方法或者實例方法 219

15.15 練習 220

第 16章 一些高 級對象主題 221

16.1 通用方法 221

16.2 為了更好的行為而測試對象 222

16.3 **後的手段 224

16.4 使用AUTOLOAD創建訪問器 225

16.5 更容易地創建getter和setter 226

16.6 多重繼承 228

16.7 練習 229

第 17章 Exporter 230

17.1 use語句在做什麽 230

17.2 使用Expo