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