1.字串的格式:
%d:整數以 10 進位顯示。
%x、%X:整數以 16 進位顯示。
%f:顯示有小數點的數字。
%c:整數用對應 ASCII 碼表的文字表示。
%s:顯示字串。
二、陣列
1.陣列宣告方式:
指定清單:@x = (1, 2, 3);
指定值:$x[0] = (1);
清空陣列:$x = ();
2.對於已做清單的變數,可以按照順序將陣列元素帶入:
$x = (1, 2, 3);
($x1, $x2, $x3) = @x;
3.將陣列帶入變數中時,變數的值會變成陣列的元素數。
4.在陣列名稱前加上「$#」時,可得知元素索引的最大值。若無元素則返回 -1。
5.關聯陣列是將鍵與值整合成一套的東西:
指定清單:%x = ( "name" => "w1a2d3s4q5e6");
指定鍵與值:%x{"name"} = "w1a2d3s4q5e6";
關聯陣列中放陣列:
@x = ( "name");
%xx = ($x[0] => "w1a2d3s4q5e6");
清空陣列:%x = ();
刪除鍵與值:delete $x{"name"};
6.參考參照(指示變數等儲存位置、或是有資訊的變數)所指示的變數:
@x = (1, 2, 3, 4);
$y = \@x;
代入參照所指定的陣列:@z = @$y;
帶入參照所指定的陣列、所指定的儲存值:
$a = $y->[0]; 或 $a = $$y[0];
7.叢集(typeglob)會整合相同名字的變數或陣列等執行處理:
$x = "字串“;
@x = "清單";
%x = ("associative_arrays" => "關聯陣列");
*xxx = *x;
print "$xxx"."$xxx[0]"."xxx{"associative arrays"};
8.將陣列設定成未定義狀態:
undef($x);
查詢變數是否有 undef:defined($x);
三、控制敘述
1.if ~ elsif ~ else
2.當某條件達到時才處理: until
3.do ~ until
4.利用標籤(label)幫區塊命名:
LABEL1:{ .
...
next LABEL1; //中斷 for 或 while 敘述,並執行所指定標籤區塊起始的地方。若有 continue 時,會先執行 continue 的處理,再執行 next。
last LABEL1; //中斷 for 或 while 敘述,並跳到所指定標籤區塊結束的地方。
redo LABEL1; //中斷 for 或 while 敘述,並回到指定標籤區塊起始的地方,重新執行處理。
}
四、正規表示式
1.正規表示式中的 Meta 文字:
- .:任意一個字。
- *:0 次以上的反覆。
- +:1 次以上的反覆。
- ?:0 次或 1 次以上的反覆。
- ^:開頭。
- $:結尾。
- |:選擇。
- ():群組。
- []:文字類別。
- {n}:n 次反覆。
- {n, }:n 次以上的反覆。
- {n, m}:n 次以上,m 次以下的反覆。
- \:將 Meta 文字當作文字處理。
2.特殊文字:
- \w:半形英數字和底線。
- \W:半形英數字和底線以外。
- \s:空白。
- \S:空白以外。
- \d:數字。
- \D:數字以外。
3.樣式查核:
符合:$result = "字串" =~ /關鍵字/; //符合為1(真),不符合為 undef。
不符合:$result = "字串" !~ /關鍵字/; // 不符合為 1,符合為 undef。
4.符合運算子(搜尋從某字串符合正規表示式的字串):
$result = "字串" =~ m/關鍵字/; 或 $result = "字串" =~ //關鍵字/;
選項:
- g:找所有符合的東西。
- i:不區分大小寫。
- m:字串以複數行處理。
- s:字串以單一行處理。
- x:忽略包含在樣式中的半形空格。
5.置換運算子:
$x = "字串"
$result = $x =~ s/關鍵字/置換後的字串/;
選項:
- e:把置換後的字串當成式子。
- g:找到所有符合的東西。
- i:不區別大小寫。
- m:字串以複數行處理。
- s:字串以單一行處理。
- x:忽略樣式中半形空格。
五、子程式
1.呼叫子程式:
sub 子程式名稱{ ... }
$x = 子程式名稱(參數); //將參數傳至子程式,並把結果儲存至變數。
2.呼叫雛型(子程式所接受參數的值或種類的宣告):
sub 子程式名稱($$;@;其他種類...) { ... }
$x = 子程式名稱(參數);
3.套件(用於區別相同名字的變數或子程式的構造)的使用:
package pack1;
$x = "123";
package pack2;
$x = "456";
print "$pack1::$x"; //123
print "$pack2::$x"; //456
4.私有變數:
my $x = 1; 或 my( $x );
5.子程式中不止能賦值,也能交付參照或叢集。
6.程式庫的製作:
副檔名以「pl」結尾,並在檔案內容最後用「l;」描述。
7.程式庫的載入:
require "xxx.pl";
8.模組的制作:
副檔名以「pm」結尾,並在檔案內容最後用「l;」描述。
9.模組的載入:
use xxx;
六、檔案操作
1.開啓檔案:
open(FILE, "<檔名.副檔名");
關閉檔案:close(FILE);
選項:
- <:從檔案開頭讀入。
- >:製作新檔案,且從開頭寫出(既有檔案會不見)。
- >>:從檔案的尾端寫出(沒有檔案時製作開新檔案)。
2.文字檔讀入:
$x = <FILE>; //第 1 行資料的讀入。
讀入所有的資料:@x = <FILE>;
3.檔案測試運算子:
$x = -e "檔案名稱.副檔名";
選項:
- -e:檔案存在為 1,不存在為 undef。
- -r:可以讀為 1,不可讀為 undef。
- -w:可以寫為 1,不可寫為 undef。
- -z:檔案大小是 0 為 1,檔案不存在為 undef。
- -s:檔案大小,檔案不存在為 undef。
4.檔案操作:
變更檔名:rename("舊檔名.副檔名", "新檔名.副檔名");
刪除檔案:unlink("檔案名稱.副檔名");
5.標準輸出入:
標準輸入:STDIN。
標準輸出:STDOUT。
標準錯誤輸出:STDERR。
6.互斥控制檔案鎖檔:
flock(FILE, 2); //鎖定讀寫。
flock(FILE, 8); //解除鎖定。
沒有留言:
張貼留言