網頁

2010年12月9日 星期四

Perl – 純量變數(scalars)

Perl 的最基本的變數型態,可以是文字,也可以是數字,兩者可以互換。
變數名稱可含有數字、文字、以及下畫線"_",但是它們不可以數字開頭。


數值

整數和浮點數,又可以以八進位、十六進位和二進位表示。
$aa = 5;
$bb = 1.22;
$cc = 0523
$dd = 0x1c
$ee = 0b11110011

運算子(Operators)對照表,運算優先順序越往下越低:

-> 方法呼叫、解參考
++ 遞增, -- 遞減
** 乘冪(次方)
! 非,~ 位元運算的 非,\ 參考
=~ 比對相符,!~ 比對不符
* 乘,/ 除, % 求餘數, x 字串倍數
+ 加、- 減, . 字串連接
<< 位元左移,>> 位元右移
< 小於,> 大於,<= 小於或等於,>= 大於或等於,lt 字串小於,gt 字串大於,le 字串小於或等於,ge 字串大於或等於
== 等於,!= 不等於,<=> 數值比較,eq 字串等於,ne 字串不等於,cmp 字串比較
& 位元AND
| 位元OR^ 位元 XOR
&& AND()
|| OR ()
.. 範圍
? : 三元運算子,例: ($a > $b) ? $a : $b;
= 指定,+=-=*= 等等
, 逗號運算子,=> 箭號運算子
not 邏輯的 NOT
and 邏輯的 AND
or  邏輯的 OR
xor 邏輯的 XOR

字串

字串由任意字元組成,必須以單引號或雙引號刮起來。
$str = ‘test’;
$chstr = “中文也可以”;

單引號和雙引號兩個使用區別
1, 單引號無法使用跳脫字元,會完整呈現出來。
2. 單引號無法做變數代換。

Perl 常見的跳脫字元:

\n   換行符號
\r   回行符號
\t   定位 tab 符號
\f   跳頁
\b   退格
\a   鈴聲
\0   八進位數,如:\007
\x   十六進位數,如:\x16
\\   \ 這個符號
\"   " 雙引號

scalars.pl
#!/usr/bin/perl
$str = "test";
print '$str\n';
print "$str\n";

$ scalars.pl
$str\ntest

數值和字串的運算

數值和字串可以一起運算,結果視目的而定。
$v1 = 91;
$v2 = '1';

print $v1 + $v2;
結果:92 (數值)

$v1 = 91;
$v2 = '1';

print $v2 . $v1;
結果:911 (字串)

$v1 = '123';

print $v1 * 1;

結果:123 (數值)


閱讀全文...

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



閱讀全文...