像學曆史課本一樣學習Perl

來源:互聯網
上載者:User

標籤:

第一次接觸Perl,還是2008年10月份的時候,當時因為項目重構,需要進行大量的文本操作,於是便拾起了以“文本操作為己任”的Perl語言。當然,帶我入門的還是那本赫赫有名的The Llama  Book, 即<Learning Perl> 第四版。

    然而,由於主要是為了使用,所以只是快餐式的學習,並沒有系統的去瞭解Perl,這幾年來三三兩兩的也寫了不少Perl指令碼,但是對於Perl那些天書式的符號,還是頗有些頭疼,經常,寫到一半就得停下來去查一下某個奇怪的文法,或者奇特的符號,很是打斷思路。社區對Perl有兩種比較中肯的評價:一是Perl是Write-Only的程式設計語言;二是Perl學起來難,但一旦學會了,用起來就相當方便。 我想這兩點其實都是基於一個事實,就是Perl裡有太多奇怪的符號,而只有你對這些符號瞭若指掌了,你才能發揮Perl的最大效率 --- 所以,學習Perl就要像學習曆史課本一樣,靠的,就是背誦!

     根據這兩年的經驗,整理了一下自己覺得用的比較多的一些符號,用法,以及函數,庫之類的,這些都是很基本的,但是“背熟”了,對提高效率會很有協助。

資料操作
  • $ - 聲明與引用用一個scalar的變數
  • @ - 聲明與引用一個list,但是當訪問一個list的成員時,需使用$ListName[index]
  • % - 聲明與引用一個hash表,但是當訪問一個hash的成員時,需要使用$HashName{key}
特殊變數
  • $0 - 當前運行指令碼的檔案名稱
  • @ARGV - 當前運行指令碼的命令列參數列表
  • $_ - 預設變數,如迴圈中的當前變數
  • @_ - 函數的輸入參數列表
  • %ENV - 系統的環境變數
  • @INC - Perl的Include路徑列表,我們可以往該列表中添加我們自己的目錄來方便引用自訂的庫
  • $! - 當前系統提示,錯誤資訊
  • $^O - 作業系統的名字
  • STDIN,STDOUT,STDERR - 輸入輸出的預設控制代碼,可以作一定的自訂
  • => - 聲明一個hash時可以用來明確的表示出key=>value的對應關係
  • $^I- 指定備份的檔案的尾碼名,如此,被修改的檔案將會自動以該尾碼名儲存一個副本
特殊用法
  • &Sub - 調用一個函數,雖然Perl有些規則讓你在某些時候可以省略這裡的&符號,但是處於一致性考慮,所以自訂的函數的調用,我一律採用此種方式。
  • $# - 用來取得模個數組的最大index, 一般情況下,也可以用-1來表示最後一個元素的index的
  • qw() - 快速聲明一個字串數組,可以省略那些煩人的引號
Regex
  • $ < digit > - 擷取被括弧捕獲的匹配
  • $`, $&, $‘ - 擷取匹配的字串,以及其前後兩個部分
  • ^,$ - 字串的始末位置,用作定位
常用函數
    • pop, push, shift, unshift, reverse - list的操作函數
    • keys,values, exists, each, delete - hash的操作函數
    • chomp, split, join, index, substr, sort - 字串操作函數
    • sprintf,printf, print - 格式化輸出函數
    • system, exec, `` - 系統命令調用函數
    • glob, unlink, mkdir, rmdir, rename,chmod,chown, open, close, opendir, closedir - 檔案系統操作函數
    • stat, lstat,localtime,gmtime,utime - 文件屬性,時間相關函數
    • hex, oct - 二進位,八進位,十六進位數轉化成十進位的函數
    • grep, map - list進階操作函數

 

      這些函數的詳細介紹,都可以通過命令:
1 perldoc -f functionname
    查到
常用庫
    • File::Basename - 根據path擷取檔案名稱或者檔案路徑
    • File::Spec - 根據檔案名稱與路徑組合成全路經
    • File::Find - 遞迴遍曆某個目錄下所有檔案
    • XML::Simple - 以一個複雜的結構來表示xml檔案,使用起來相當方便
    • Time::HiRes - 經常用來計算一個操作所耗費的時間
    • Getopt::Long - 當指令碼需要複雜的輸入參數與選項時用到
    • Cwd - 拿到當前工作目錄
    • IO::File - 檔案操作
    • Win32 - 當需要調用一些Windows API時我會用它

像學曆史課本一樣學習Perl

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.