內容簡介
作為最有影響力的編程語言之一,Perl被廣泛用在Web開發、數據處理和係統管理中。無論是Perl新手,還是想要加強自己實戰技能的Perl程序員,《Perl入門經典》都提供瞭處理日常情況所需的各種技術。憑藉十多年的Perl經驗,作者Curtis“Ovid”Poe一開始先簡單迴顧瞭Perl的基礎知識,然後以此為齣發點,舉例說明瞭Perl在工作場所中的各種真實用法。此外,書中還包含瞭一些動手練習、寶貴建議和實用例子,作者把所有這些內容冶於一爐,打造瞭一本不可或缺的經典之作。
主要內容
·講解如何使用Perl的內置函數處理數據;
·展示使用Perl處理Unicode的做法;
·詳細介紹控製流及引用、文件和目錄的處理等基礎知識;
·分彆用一章的篇幅詳述Perl的麵嚮對象功能和Moose;
·提供全麵的自動化測試介紹;
·講述Catalyst、DBIx::Class和其他一些廣受歡迎的模塊的用法;
·由知名開發者Chromatic擔任技術編輯,他也是一位多産 的作傢,是多本Perl圖書的作者。
作者簡介
Curtis "Ovid" Poe,從2000年開始專注於Perl的開發,他是一位作傢,也是一位演講嘉賓,定期在歐洲和美國各處舉行的會議上發錶演說。他所編寫的測試框架目前正隨同Perl語言一起發行。
內頁插圖
精彩書評
“這不是大傢日常所見的那種入門書,Ovid不僅提供瞭關於Perl基礎知識和最佳實踐的精彩講解,而且還介紹瞭一些先進的Perl技術和模塊,而這些正是Perl的真正強大之處。這就像是係上瞭蝙蝠俠的配件腰帶,你擁有瞭創造齣真正令人驚嘆的東西所需的一切。如朵Perl是一條鯊魚,那麼本書就是在教你如何使用激光發射器來裝備它。”
——Paul Fenwick,Perl Training Australia
目錄
第1章 Perl簡介
1.1 Perl的發展現狀
1.2 獲取Perl
1.2.1 在非Windows平颱使用Ped:pedbnew
1.2.2 使用Windows平颱
1.3 Perl社區
1.3.1 IRC
1.3.2 PerIMonks
1.3.3 PerIMongers
1.3.4 StackOverflow
1.4 使用Perl文檔
1.4.1 理解perldoc的結構
1.4.2 開始使用peIldoc
1.4.3 使用教程和常見問題解答
1.4.4 使用perldoc-f
1.5 使用終端窗口
1.5.1 使用命令行
1.5.2 創建工作目錄
1.6 創建“Hello, World!”程序
1.6.1 編寫你的第一個程序
1.6.2 shebang行
1.7 本章小結
第2章 理解CPAN
2.1 CPAN和metacpan
2.1.1 搜索和評價模塊
2.1.2 下載和安裝
2.2 cpan客戶端
2.2.1 使用CPAN.pm客戶端
2.2.2 使用cpanm客戶端
2.2.3 ppm
2.2.4 CPAN::mini
2.3 本章小結
第3章 變量
3.1 何為程序設計
3.2 正式開始前的注意事項
3.2.1 strict、wamings及diagnostics
3.2.2 my函數
3.2.3 魔符
3.2.4 標識符
3.3 標量
3.3.1 字符串
3.3.2 數字
3.4 數組
3.4.1 分解代碼
3.4.2 訪問元素
3.4.3 對數組進行迭代
3.5 哈希錶
3.5.1 訪問元素
3.5.2 對哈希錶進行迭代
3.5.3 對哈希增加數據
3.6 切片
3.6.1 數組切片
3.6.2 哈希切片
3.7 上下文
3.7.1 標量上下文
3.7.2 列錶上下文
3.8 作用域
3.8.1 my變量
3.8.2 包變量
3.9 strict、warnings和diagnostics
3.9.1 strict
3.9.2 warnings
3.9.3 diagnostics
3.9.4 在沒有網絡的情況下工作
3.10 Perl的內置變量
3.10.1 $
3.10.2 %ENV
3.10.3 @ARGV
3.10.4 其他的特殊變量
3.11本章小結
第4章 數據處理
4.1 使用標量
4.1.1 字符串處理
4.1.2 使用字符串操作符
4.1.3 Scalar::Util
4.1.4 數值型內置函數或操作符
4.1.5 位操作符
4.1.6 瞭解布爾操作
4.1.7 賦值操作符
4.1.8 優先級和關聯性
4.2 數組和列錶函數
4.2.1 內置數組函數
4.2.2 List::Util
4.3 內置的哈希函數
4.3.1 delete()
4.3.2 exist()
4.3.3 key()
4.3.4 values()
4.3.5 each()
4.4 作用域關鍵字
4.4.1 rny()
4.4.2 local()
4.4.3 our()
4.4 4 state()
4.5 本章小結
第5章 流程控製
5.1 使用if語句
5.1.1 理解基本的條件語句
5.1.2 else/elsif/unless
5.1.3 三元操作符
5.2 for/foreach循環
5.2.1 數組
5.2.2 列錶
5.2.3 C語言風格
5.3 使用while或until循環
5.3.1 列錶
5.3.2 內置函數:last()、next()、redo()和continue()
5.3.3 標簽
5.4 語句修飾符
5.4.1 語句修飾符的類型
5.4.2 dowbile或do until
5.5 given/when語句
5.5.1 基本語法
5,52 Switch模塊
5.6 本章小結
第6章 引用
6.1 關於引用的基礎知識
6.1.1 數組引用
6.1.2 哈希引用
6.1.3 匿名引用
6.1.4 其他引用
6.2 使用引用
6.2.1 調試
6.2.2 復製
6.2.3 切片
6.3 本章小結
6.4 練習
第7章 子程序
7.1 子程序的語法
7.1.1 參數處理
7.1.2 多重參數
7.1.3 命名參數
7.1.4 彆名
7.1.5 狀態變量(5.10之前版本和5.10之後版本)
7.1.6 傳遞列錶、哈希或哈希引用?
7.2 返迴數據
7.2.1 返迴真/假
7.2.2 返迴單值或多值
7.2.3 wantanay函數
7.3 錯誤
……
第8章 正則錶達式
第9章 文件與目錄
第10章 sort、map和grep
第11章 包和模塊
第12章 麵嚮對象的Perl
第13章 Moose
第14章 測試
第15章 互聯網
第16章 數據庫
第17章 使用其他外部工具
第18章 常見任務
第19章 進階
附錄習題答案
前言/序言
“找份工作吧,嬉皮士!”
拒絕使用這句話作為本書的副標題是很遺憾的事情,但也很明智。不過,它傳達齣瞭關於本書我很看重的兩件事,那就是:在學習所需的技能時做到贏取工作和享受樂趣兩不誤,好吧,是該在學習如何編程的同時適度地享受一些樂趣瞭。盡管許多書都沒有直言這樣的意圖,但我還是在此先把它給挑明瞭吧:這是一本與賺錢有關的書。信息技術(Information Technology,IT)工作者的需求量很大,甚至是在當前經濟不景氣的時候也是如此,本書這樣說憑藉的不僅是我13年的Perl編程語言經驗,還有就“野生狀態的Perl”這一主題所做的一些調查。這就是為什麼你將會在書中發現一個令人吃驚的決定:本書把關注的重點放在Perl的5.8和5.10版本上,它們已不再是官方支持的版本,但卻是大多數的公司仍在使用的版本。幸運的是,Perr5Porters(也被稱作P5P)努力保持著嚮後兼容,因此本書中的代碼依然能夠運行在最新版本的Perl上。作為這一重點關注的結果,在完成本書的學習後,你將擁有在接受許多Perl工作時必須具備的技能。最初我設想這是一本以開發工作技能為目標的Perl語言書,當時我住在俄勒岡州的波特蘭市;後來,我搬到瞭倫敦,並做瞭一些跟寫作本書有關的調查,但沒有起到什麼作用;再後來,我搬到瞭阿姆斯特丹,開始與Wrox閤作撰寫本書;現在,我住在巴黎,並在此完成本書的寫作。所有這些城市呈現齣來的共同跡象是,Perl打開瞭工作的大門。在許多其他優秀的動態語言,比如說PHP、Python和Ruby正在為同一塊餡餅爭鬥時,一些Perl開發者卻轉嚮瞭其他語言,離開瞭那些需要開發者使用Perl語言來維護代碼和構建新係統的公司,Perl開發者的需求量居高不下,本書的齣現就是為瞭滿足這一需要。
為瞭免得你認為Perl的作用就是維護遺留代碼,我嚮你保證,許多公司,包括大型的和小型的,仍都在轉嚮Perl,把它作為編程語言的首選。該語言功能強大、切實可靠,Perl綜閤典藏網(Comprehensive Perl Archive Network,CPAN)仍是麵嚮單門語言的最大開源代碼集。許多時候你會發現,不一定需要編寫新的代碼來解決某個棘手問題,你可以求助於CPAN,在上麵找齣他人已寫好的這類代碼。
Perl:靈活的腳本語言,驅動你的創新 Perl,一個名字響徹技術世界的腳本語言,以其強大的文本處理能力、極高的靈活性以及廣泛的應用領域而聞名。自誕生以來,Perl 便以一種“瑞士軍刀”式的姿態,為程序員提供瞭解決復雜問題的強大工具集。它並非專注於某個特定領域,而是像一位技藝精湛的工匠,能夠勝任從係統管理、網絡編程,到 Web 開發、生物信息學分析等各種不同任務。 Perl 的魅力在於其獨特的語法設計,它融閤瞭 C 語言的強大功能、Unix shell 的簡潔高效,以及正則錶達式的強大模式匹配能力。這種混閤的特性使得 Perl 能夠以簡潔的腳本完成通常需要更復雜程序纔能實現的任務。尤其是在處理文本數據方麵,Perl 無疑是王者,其內置的豐富函數庫以及強大的正則錶達式引擎,讓字符串的提取、轉換、清洗變得輕而易舉。無論是解析日誌文件、處理 CSV 數據,還是從 HTML 中抓取信息,Perl 都能遊刃有餘。 Perl 的核心優勢: 強大的文本處理能力: 這是 Perl 最為突齣的特質。其內置的正則錶達式(regex)功能強大到令人驚嘆,能夠進行復雜的模式匹配、查找、替換和提取。這使得 Perl 在日誌分析、數據清洗、報告生成等領域成為首選語言。 高度的靈活性: Perl 允許開發者以多種方式解決同一個問題,這既是其強大之處,也需要使用者深入理解其設計哲學。這種靈活性使得 Perl 能夠適應各種不同的編程風格和項目需求。 豐富的模塊生態係統: CPAN(Comprehensive Perl Archive Network)是 Perl 模塊的寶庫,擁有數以萬計的免費模塊,覆蓋瞭幾乎所有你能想到的應用領域。需要進行數據庫操作?有成熟的模塊。需要進行網絡通信?有專門的庫。甚至需要進行圖形處理或遊戲開發,你都能找到相應的模塊。這種高度成熟的生態係統極大地加快瞭開發進程。 跨平颱兼容性: Perl 腳本可以在各種主流操作係統上運行,包括 Windows、macOS、Linux 和 Unix。這意味著你編寫的 Perl 代碼幾乎可以無縫遷移到不同的環境,大大提高瞭代碼的可移植性。 易於學習(入門): 盡管 Perl 在某些高級特性上可能顯得復雜,但其基本語法相對容易掌握。對於初學者來說,Perl 能夠提供一個快速上手並産齣實際成果的體驗,從而建立起編程的信心。 Perl 的應用場景: Perl 的應用場景非常廣泛,幾乎滲透到 IT 行業的各個角落: 係統管理與自動化: Perl 是係統管理員的得力助手。它可以用來編寫自動化腳本,處理日常的係統維護任務,例如文件備份、用戶管理、服務監控、軟件部署等。通過 Perl 腳本,可以顯著提高係統管理的效率和準確性。 Web 開發: Perl 在 Web 開發領域有著悠久的曆史。雖然現在有許多更現代的 Web 框架,但 Perl 仍然是許多遺留係統和一些特定領域的 Web 應用的首選。Perl 的 CGI(Common Gateway Interface)是早期 Web 開發的基石之一,而像 Catalyst、Mojolicious 這樣的現代 Web 框架也為 Perl 在 Web 開發領域提供瞭新的活力。 網絡編程: Perl 強大的文本處理能力和豐富的網絡模塊使其成為編寫網絡工具和服務的理想選擇。無論是開發簡單的客戶端/服務器程序,還是進行復雜的網絡協議分析,Perl 都能勝任。 生物信息學: 在生物信息學領域,Perl 占據著舉足輕重的地位。大量的基因組數據分析、序列比對、數據庫查詢等任務,都依賴於 Perl 腳本的強大文本處理和數據分析能力。許多著名的生物信息學工具都是用 Perl 編寫的。 數據科學與分析: 盡管 Python 在數據科學領域越來越流行,但 Perl 在某些特定數據處理任務上仍然具有優勢。其強大的正則錶達式和文本匹配能力,在數據清洗和預處理階段尤為突齣。 DevOps: 在 DevOps 文化日益盛行的今天,自動化和效率是關鍵。Perl 腳本在自動化部署、配置管理、監控告警等方麵發揮著重要作用,幫助團隊構建更敏捷、更可靠的軟件交付流程。 嵌入式係統和硬件控製: 憑藉其輕量級和靈活性,Perl 也可以用於某些嵌入式係統和硬件控製的場景,實現對硬件的低層級操作和數據采集。 Perl 的發展與社區: Perl 由 Larry Wall 創建,自 1987 年首次發布以來,經曆瞭多次重要的版本迭代。Perl 社區一直非常活躍,擁有大量的開發者和愛好者。CPAN 社區是 Perl 生態係統的重要組成部分,它不僅提供瞭豐富的模塊,還促進瞭開發者之間的交流和協作。盡管與其他新興語言相比,Perl 的關注度可能有所下降,但它依然是許多企業級應用和關鍵基礎設施的“幕後英雄”。 為何學習 Perl? 在當今技術棧日新月異的時代,為何仍然值得學習 Perl? 解決實際問題: Perl 能夠非常高效地解決許多你在日常工作中遇到的實際問題,尤其是在處理文本和自動化方麵。 理解底層原理: 學習 Perl 可以幫助你更深入地理解腳本語言的設計哲學,以及其強大的文本處理機製,這對於成為一名更全麵的程序員是有益的。 維護和擴展現有係統: 許多重要的、仍在運行的係統是用 Perl 編寫的。掌握 Perl 能夠讓你參與到這些係統的維護和開發中。 獨特的思維方式: Perl 的“There's more than one way to do it”(TMTOWTDI)哲學,鼓勵開發者以多種方式解決問題,這有助於培養發散性思維和靈活的編程習慣。 掌握一種強大的工具: 無論你主要使用哪種編程語言,Perl 都可以作為你的一個強大補充工具,幫助你更高效地完成某些特定任務。 Perl 是一種強大、靈活且應用廣泛的腳本語言。它以其獨特的語法和強大的文本處理能力,為開發者提供瞭解決復雜問題的有效途徑。無論你是初學者,還是經驗豐富的程序員,學習 Perl 都將為你打開一扇新的編程視野,並為你提供一套實用的工具,讓你在技術道路上更進一步。