Perl是一種功能強(qiáng)大的通用編程語言,享有“一種擁有各種語言功能的夢(mèng)幻腳本語言”、“UNIX中的王牌工具”等美譽(yù),受到了國內(nèi)程序員和系統(tǒng)管理員的青睞。
《Perl進(jìn)階(第2版)》作為L(zhǎng)earning Perl一書的進(jìn)階,主要講解了如何更加有效地利用Perl進(jìn)行開發(fā)。本書總共分為21章,每章內(nèi)容篇幅不大,主要內(nèi)容包括Perl簡(jiǎn)介、使用模塊、中級(jí)操作基礎(chǔ)、引用簡(jiǎn)介、引用和作用域、操作復(fù)雜的數(shù)據(jù)結(jié)構(gòu)、對(duì)子例程的引用、文件句柄引用、正則表達(dá)式引用、構(gòu)建更大型的程序、創(chuàng)建自己的Perl發(fā)行版、對(duì)象簡(jiǎn)介、測(cè)試簡(jiǎn)介、帶數(shù)據(jù)的對(duì)象、Exporter模塊、對(duì)象析構(gòu)、Moose簡(jiǎn)介、高級(jí)測(cè)試、為CPAN貢獻(xiàn)代碼等知識(shí)。
《Perl進(jìn)階(第2版)》適合具有一定Perl基礎(chǔ)的程序員和系統(tǒng)管理員閱讀。對(duì)于高級(jí)Perl程序員來講,《Perl進(jìn)階(第2版)》也是技術(shù)參考讀物。
本書是Learning Perl一書的進(jìn)階。學(xué)完本書之后,您可以使用Perl語言的特性編寫從簡(jiǎn)單腳本到大型程序在內(nèi)的所有程序,正是Perl語言的這些特性使其成為通用的編程語言。本書為讀者深入介紹了模塊、復(fù)雜的數(shù)據(jù)結(jié)構(gòu)以及面向?qū)ο缶幊痰戎R(shí)。本書每章的篇幅都短小精悍,讀者可以在一到兩個(gè)小時(shí)內(nèi)讀完,每章末尾的練習(xí)有助于您鞏固在本章所學(xué)的知識(shí)。如果您已掌握了Learning Perl中的內(nèi)容并渴望能更進(jìn)一步,本書將向您講授Perl語言的絕大多數(shù)核心概念,以便在任何平臺(tái)上編寫出健壯的程序。本書主題包括:包和命名空間;引用和作用域,包括正則表達(dá)式的引用;操作復(fù)雜的數(shù)據(jù)結(jié)構(gòu);面向?qū)ο缶幊蹋痪帉懞褪褂媚K;測(cè)試Perl代碼;為CPAN做出貢獻(xiàn)。
目錄
第1章 簡(jiǎn)介1
1.1 背景知識(shí)2
1.2 strict和warnings2
1.3 Perl v5.143
1.4 關(guān)于這些腳注4
1.5 關(guān)于后續(xù)的練習(xí)4
1.6 獲取幫助的方式5
1.7 如果是一個(gè)Perl課程講師5
1.8 練習(xí)6
第2章 使用模塊7
2.1 標(biāo)準(zhǔn)發(fā)行版7
2.2 探討CPAN8
2.3 使用模塊9
2.4 功能接口10
2.5 面向?qū)ο蟮慕涌?1
2.5.1 一個(gè)更典型的面向?qū)ο竽K:Math::BigInt12
2.5.2 更佳的模塊輸出13
2.6 核心模塊的內(nèi)容14
2.7 Perl綜合典藏網(wǎng)15
2.8 通過CPAN安裝模塊16
2.8.1 CPANminus16
2.8.2 手動(dòng)安裝模塊17
2.9 適時(shí)設(shè)定路徑18
2.10 在程序外部設(shè)定路徑20
2.10.1 使用PERL5LIB擴(kuò)展@INC20
2.10.2 在命令行擴(kuò)展@INC目錄21
2.11 local::lib21
2.12 練習(xí)23
第3章 中級(jí)基礎(chǔ)24
3.1 列表操作符24
3.1.1 使用grep表達(dá)式過濾列表25
3.1.2 使用map轉(zhuǎn)換列表27
3.2 使用eval捕獲錯(cuò)誤28
3.3 用eval語句塊動(dòng)態(tài)編譯代碼30
3.4 使用do語句塊31
3.5 練習(xí)32
第4章 引用簡(jiǎn)介33
4.1 在多個(gè)數(shù)組上完成相同的任務(wù)33
4.2 PeGS:Perl圖形結(jié)構(gòu)35
4.3 對(duì)數(shù)組取引用36
4.4 對(duì)數(shù)組引用進(jìn)行解引用操作38
4.5 去除大括號(hào)40
4.6 修改數(shù)組40
4.7 嵌套的數(shù)據(jù)結(jié)構(gòu)41
4.8 用箭頭簡(jiǎn)化嵌套元素的引用43
4.9 散列的引用44
4.10 檢查引用類型47
4.11 練習(xí)49
第5章 引用和作用域51
5.1 關(guān)于數(shù)據(jù)引用的更多信息51
5.2 如果它曾是變量名將會(huì)怎樣52
5.3 引用計(jì)數(shù)和嵌套數(shù)據(jù)結(jié)構(gòu)53
5.4 當(dāng)引用計(jì)數(shù)出現(xiàn)問題時(shí)55
5.5 直接創(chuàng)建匿名數(shù)組57
5.6 創(chuàng)建匿名散列59
5.7 自動(dòng)帶入61
5.8 自動(dòng)帶入和散列63
5.9 練習(xí)65
第6章 操作復(fù)雜的數(shù)據(jù)結(jié)構(gòu)67
6.1 使用調(diào)試器查看復(fù)雜的數(shù)據(jù)67
6.2 使用Data::Dumper模塊查看復(fù)雜的數(shù)據(jù)71
6.3 數(shù)據(jù)編組74
6.3.1 使用Storable模塊對(duì)復(fù)雜數(shù)據(jù)排序75
6.3.2 YAML模塊80
6.3.3 JSON模塊81
6.4 使用map和grep操作符81
6.5 應(yīng)用一點(diǎn)間接方法81
6.6 選擇和改變復(fù)雜數(shù)據(jù)83
6.7 練習(xí)84
第7章 對(duì)子例程的引用86
7.1 對(duì)命名子例程的引用86
7.2 匿名子例程90
7.3 回調(diào)92
7.4 閉包93
7.5 從一個(gè)子例程返回另一個(gè)子例程94
7.6 作為輸入?yún)?shù)的閉包變量97
7.7 閉包變量作為靜態(tài)局部變量98
7.8 查詢我們自己的身份101
7.8.1 令人著迷的子例程102
7.8.2 轉(zhuǎn)儲(chǔ)閉包105
7.9 練習(xí)105
第8章 文件句柄引用107
8.1 舊方法107
8.2 改進(jìn)的方法108
8.3 指向字符串的文件句柄110
8.4 文件句柄集合111
8.5 IO::Handle模塊和其他相應(yīng)的模塊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 練習(xí)118
第9章 正則表達(dá)式引用120
9.1 正則表達(dá)式引用之前120
9.2 預(yù)編譯模式122
9.2.1 正則表達(dá)式選項(xiàng)123
9.2.2 應(yīng)用正則表達(dá)式引用123
9.3 作為標(biāo)量的正則表達(dá)式124
9.4 建立正則表達(dá)式126
9.5 創(chuàng)建正則表達(dá)式的模塊128
9.5.1 使用常見的模式128
9.5.2 組裝正則表達(dá)式129
9.6 練習(xí)130
第10章 實(shí)用的引用技巧132
10.1更佳的輸出132
10.2 用索引排序134
10.3 更為高效的排序135
10.4 施瓦茨變換136
10.5 使用施瓦茨變換實(shí)現(xiàn)多級(jí)排序137
10.6 遞歸定義的數(shù)據(jù)138
10.7 構(gòu)建遞歸定義的數(shù)據(jù)139
10.8 顯示遞歸定義的數(shù)據(jù)142
10.9 避免遞歸143
10.10 練習(xí)146
第11章 構(gòu)建更大型的程序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 練習(xí)159
第12章 創(chuàng)建你自己的發(fā)行版160
12.1 Perl模塊的兩個(gè)構(gòu)建系統(tǒng)160
12.1.1 在Makefile.PL內(nèi)部161
12.1.2 在Build.PL文件內(nèi)部162
12.2 我們的**個(gè)發(fā)行版163
12.2.1 h2xs工具163
12.2.2 Module::Starter模塊164
12.2.3 定制模版165
12.3 在你的發(fā)行版內(nèi)部165
12.3.1 META文件167
12.3.2 添加額外的模塊168
12.4 模塊內(nèi)部169
12.5 老式文檔171
12.5.1 段落的Pod命令172
12.5.2 Pod段落172
12.5.3 Pod格式標(biāo)記173
12.5.4 檢查Pod格式174
12.6 模塊中的代碼174
12.7 模塊構(gòu)建的總結(jié)175
12.7.1 創(chuàng)建基于Module::Build模塊的發(fā)行版175
12.7.2 創(chuàng)建ExtUtils::Makemaker發(fā)行版176
12.8 練習(xí)176
第13章 對(duì)象簡(jiǎn)介177
13.1 如果我們可以和動(dòng)物對(duì)話177
13.2 介紹方法的調(diào)用箭頭179
13.3 方法調(diào)用的額外參數(shù)180
13.4 調(diào)用第二個(gè)方法進(jìn)一步簡(jiǎn)化181
13.5 關(guān)于@ISA的幾個(gè)注意事項(xiàng)183
13.6 方法重寫184
13.7 開始從不同的地方查找186
13.8 使用SUPER的實(shí)現(xiàn)方法186
13.9 要對(duì)@_做些什么187
13.10 我們?cè)谀睦?87
13.11 牧場(chǎng)總結(jié)187
13.12 練習(xí)189
第14章 測(cè)試簡(jiǎn)介190
14.1 為什么需要測(cè)試190
14.2 Perl的測(cè)試流程191
14.3 測(cè)試的藝術(shù)193
14.4 測(cè)試用具195
14.5 標(biāo)準(zhǔn)測(cè)試195
14.5.1 模塊編譯的檢查196
14.5.2 模板測(cè)試198
14.5.3 測(cè)試Pod200
14.6 添加**個(gè)測(cè)試201
14.7 測(cè)量測(cè)試覆蓋率204
14.7.1 子例程覆蓋率205
14.7.2 語句覆蓋率205
14.7.3 分支覆蓋率205
14.7.4 條件覆蓋率206
14.8 練習(xí)206
第15章 帶數(shù)據(jù)的對(duì)象208
15.1 馬屬于馬類,各從其類是嗎208
15.2 調(diào)用實(shí)例方法210
15.3 訪問實(shí)例數(shù)據(jù)211
15.4 如何構(gòu)建Horse的實(shí)例211
15.5 繼承構(gòu)造函數(shù)212
15.6 編寫能夠使用類或?qū)嵗鳛閰?shù)的方法213
15.7 為方法添加參數(shù)213
15.8 更有趣的實(shí)例214
15.9 一匹不同顏色的馬215
15.10 收回存款216
15.11 不要查看“盒子”里面的內(nèi)容217
15.12 更快的setter和getter218
15.13 getter作為雙倍的setter219
15.14 僅僅限制一個(gè)類方法或者實(shí)例方法219
15.15 練習(xí)220
第16章 一些高級(jí)對(duì)象主題221
16.1 通用方法221
16.2 為了更好的行為而測(cè)試對(duì)象222
16.3 *后的手段224
16.4 使用AUTOLOAD創(chuàng)建訪問器225
16.5 更容易地創(chuàng)建getter和setter226
16.6 多重繼承228
16.7 練習(xí)229
第17章 Exporter230
17.1 use語句在做什么230
17.2 使用Expo