Hello World!
#!/usr/bin/perl # Hello World! # Perl:1980年代誕生,直譯式語言。 print "Hello World!\n"; # 雙引號可內嵌特殊字元 如: # \n Newline # \r Carriage Return # \t Tab # \f Formfeed # \b Backspace # \v Vertical Tab # \a Bell # \e Escape # \001 Octal ASCII value (here Ctrl-A) # \x20 Hex ASCII value (here space) # \cD Control character (here Ctrl-D) # \\ Backslash # \" Double Quote # \l Lowercase next letter # \L Lowercase all following letters until \E # \u Uppercase next letter # \U Uppercase all following letters until \E # \E Terminate \L or \U print 'Hello World!\n'; # 單引號則只能內嵌 \\ \' # 註一:在 Perl 中,函式可不用括號,以下兩行相等: # print "Hello World!\n"; # print("Hello World!\n"); # # 註二:在 Perl 中,"abc" 為三個字元,在 C 下, # "abc" 為三個字元加上一 Null 字元。 # Perl 單行註解為 '#' 開頭 # 多行註解為 =pod 此為註解 =cut
純量(Scalar)
# 純量 (scalar) # (1) 純量:以 $ 開頭之變數,可儲存整數、浮點數、字串等 $val1 = 1; # 1 $val2 = 0x123; # 十六進位數值 123 # 為了使數字方便辨識,可加入 _ 分隔, # 此變數數值為 23323930 $val3 = 23_323_930; $val4 = -4.32e3; # 科學記號 $str1 = "AB"; # 字串 "AB" $name = "Bill"; print "Hello, $name\n"; # 雙引號可內嵌變數 print 'Hello, $name\n'; # 單引號不行 # (2) 數值與字串間的自動轉換 $a = "1"; # 字串 $b = "2"; # 字串 # Perl 會先將 $a 與 $b 自動轉為數值再相加,傳回數值 $c = $a + $b; $d = "12abc34"; # Perl 會略過 $d 內非數字起頭到結尾的部份, # 即 $d 被轉換為數值 12,再經計算 $e 為 24 $e = $d * 2; $f = "abc"; # 若完全不是數字的字串,會被轉換成零, # 因此結果 $f 被轉換為零,再經計算 $g 亦為 0 $g = $f * 2; $a = 1; # 數值 # Perl 會將 $a 轉為字串,做字串相加,$b 為 "string1" $b = "string" . $a; # 註:'.' 為字串相加運算子 # (3) 在字串內安插變數 $val = 12; $str1 = "I have $val dollars."; # 安插變數 $str2 = 'I have ' . $val . ' dollars.'; # 字串相加 $str3 = "def"; # Perl 有時容易誤判變數名稱 $str4 = "abc$str3ghijk"; # 加入 {} 之後,可讓 Perl 正確判斷安插變數名稱 $str5 = "abc${str3}ghijk"; # (4) 特殊變數 $_ $_ = "Bill"; print; # 若省略參數,預設為 $_,即 print $_; # (5) chomp,chop 刪除最後一個(換行)字元 $str1 = "hello world.\n"; chomp($str1); # 刪除最後一個換行字元,變成 "hello world." chomp($str1); # 無效果 chop($str1); # 刪除最後一個字元,變成 "hello world" chop($str1); # 刪除最後一個字元,變成 "hello worl"
陣列(Array)
# 陣列(array) # (1) 陣列:'@' 開頭,一連串的純量 @empty = (); # 空陣列 # 一陣列內含兩元素 "Bill" "Mary" @arr1 = ("Bill","Mary"); # @arr2 = ("Bill","Mary","John") @arr2 = (@arr1,"John"); # @arr3 = ("John","Mary","Bill") @arr3 = reverse @arr2; # 按照 ASCII 碼排序,@arr4 = ("Bill","John","Mary") @arr4 = sort @arr2; print $arr1[1]; # "Mary" print $#arr2; # @arr2 最後一個元素的 index 即 2 print $arr2[$#arr2]; # @arr2 最後一個元素 print $arr2[-2]; # @arr2 倒數第二個元素 @arr4 = ("a","b","c","d","e","f"); @arr5 = @arr4[2..4]; # 取出 @arr4 第三到第五個元素 ($a,$b) = ($b,$a); # 交換 $a 與 $b # (2) 純量與陣列語境 @array = ("a","b","c"); # 陣列 $scalar1 = @array; # Perl 會傳回 @array 的長度 $scalar2 = sort @array; # Perl 會傳回 undef $scalar3 = reverse @array; # Perl 會傳回 "cba" $scalar4 = "@array"; # Perl 會傳回 "a b c" $scalar = "a"; # 純量 ($scalar); # 陣列,元素個數為一 # (3) pop,push,shift,unshift 陣列處理 @arr = (0,1); push(@arr,2); # push 後,@arr = (0,1,2) $a = pop(@arr); # pop 後,@arr = (0,1),$a = 2 @arr = (0,1); unshift(@arr,2); # unshift 後,@arr = (2,0,1) $a = shift(@arr); # shift 後,@arr = (0,1),$a = 2 # (4) split,join $str = "It's my life." # 以空白做分隔,將 $str 切成陣列,存入 @arr @arr = split / /,$str; # 以 "-" 作分隔,將 @arr 連接成一個純量變數 $str2 = join "-",@arr;
繼續閱讀:Perl 程式設計教學