網頁

2010年12月9日 星期四

Perl: 1. Perl 之旅

前言
最好具備有下列條件:
  1. 已瞭解 HTML 語法並且寫過程式(C, C++, java...)。
  2. 系統已經安裝 Perl 5.x 的環境,Linux 或 Windows 皆可。

Perl 歷史
  • Perl 是一個非常強大的 script language。它的全名是 Practical Extraction and Report Language。
  • 由 Larry Wall 創造出來,在1987年時最早出現在 usenet 的新聞群組 comp.source。
  • Perl is Free Software, available under the Artistic License and the GPL
  • Perl的沿革:
    • 1987/10/18發表Perl 1.0。
    • 1994年發表Perl 5 始具有OOP的作法。
    • 5.8.0 版開始, Perl 具備了Unicode (萬國碼) 支援。
      • 將 Big5 編碼的檔案轉成 Unicode,祗需鍵入下列指令
      • 
        perl -Mencoding=big5,STDOUT,utf8 -pe1 < file.big5 > file.utf8
        
        
      • Perl 內附一支完全以 Perl 寫成的字碼轉換工具程式(piconv),用法如下:
      • 
        piconv -f big5 -t utf8 < file.big5 > file.utf8 
        piconv -f utf8 -t big5 < file.utf8 > file.big5
        
        
    • 2003年發表了Perl 6 。

Perl 概念
Perl 是非常容易使用的程式語言,可以很快就寫完一支 Perl 的程式。因為 Perl 的誕生就是在讓使用者能夠以更方便的方式去撰寫程式碼,不必像寫 C 的時候要考慮很多細節。
Perl 更是一個強大處理文字的工具。正規表示式更是 Perl 傲人的部份,這也就是 Perl 大量被拿來使用作為文字處理的原因之一。

  • Perl是以 C 語言開發而成的描述語言,具跨平台的特性,融合了 C、sed、awk 和 shell 最好的特色。
  • 和 C 不同之處
    • Perl 沒有 main()主函數的概念。
    • Perl 可不需宣告變數,但建議使用 use strict,強制使用變數前要宣告。
    • Perl 變數前置符號為$。
    • Perl 的命令列參數中,$ARGV[0] 是第一個參數,不是程式名稱,程式名稱存在 $0。
    • Perl 的大括弧是不可以省略,但可用倒裝句,例如: last if n > 0 可以不用大括弧。
  • Perl 沒有嚴格的資料型態,區分單複數,單數事物稱為純量,複數事物以串列,陣列,雜湊來表示。
  • Perl 的純量會自動依照運算元的不同來決定是數值資料或是字串資料。
  • Perl 有許多預設變數來幫助程式設計師節省時間,而預設變數名稱非常特別,例如$_, $&, @_, ..,是為了避免與現有的命名相衝突。
  • Perl 的運算式會因為解析純量值或串列值而有不同的意義,此預期稱之為語境(context)。

安裝 Perl 的環境
目前已知的系統有 Unix、Mac、Amiga、Windows...。可以從各大CPAN網站來免費取得Perl。

  • 幾乎所有 unix-like 環境預設都已安裝 Perl 。
  • Windows上的Perl則是以Active Perl(http://www.activeperl.com),下載其免費的 ActivePerl Community Edition 版即可。

使用 Perl
  • 可由下列指令確認現在 Perl 的版本。
  • 
    $ perl -v
    This is perl, v5.8.0 built for i386-linux-thread-multi
    (with 1 registered patch, see perl -V for more detail)
    Copyright 1987-2002, Larry Wall。
    
    

第一支 Perl 程式
PERL File Extension 有明確的規定,請使用 pl 作為副檔名。


#!/usr/bin/perl
# Hello.pl
print "hello world\n";      # print a message


  • 說明:
    • #!/usr/bin/perl
      此行的路徑會隨著實際安裝 Perl 的目錄來改變。用來告訴系統在程式被執行時該如何處理,亦即是告訴系統以 Perl 來執行該程式。這一行對 Win32 版的 Perl 不重要。
    • #符號用來註釋,由#開始直到該行之結尾,中間所有的文字將被忽略,但除了程式的第一行之外。
    • 每一個敘述結尾都需以分號";"來作為結尾。
    • 函數 print用來輸出訊息。

  • 執行 Perl

$ perl Hello.pl
hello world!


  • 或透過 chmod 指令 +x 讓 Hello.pl 變成可以執行的。

$ Hello.pl
hello world! 


  • 檢查語法正確性

$ perl –c Hello.pl
Hello.pl syntax OK


  • 告訴系統於執行該程式前先顯示系統的警告與其他有用的訊息。

$ perl –w Hello.pl


  • 抓蟲

$ perl –d Hello.pl
Loading DB routines from perl5db.pl version 1.19
Editor support available.

Enter h or `h h' for help, or `man perldebug' for more help.

main::(hello.pl:3):     print "Hello World!\n"
  DB<1> q


沒有留言:

張貼留言