$指一個 ,@指一堆,%指hash
---------------------------------------------------
x 字串重複操作符.Eg: "fred" x 3 = "fredfredfred"
------------------------------------------------------
數組:
$#數組名 最後一個元素的索引值
$資料名[-1] 最後一個元素
pop和push在最後段操作,shift和unshift在最左端操作
reverse 反轉列表元素
sort 對列表的值排序
$_ 預設變數.Eg: foreach迴圈中的預設變數
---------------------------------------------
子程式:
&子程式 調用子程式
最後一個運算的結果對自動產生子程式的傳回值。當然也可以用return.
@_ 儲存子程式的參數列表(私人變數)。$_[0]指@_的第1個元素。
@_ 還可以用來判斷參數長度。Eg: if( @_ != 2 ) {}
my 子程式私人變數定義符。
state 可以在子程式多次調用期間保留變數的值,並將變數的作用局限於子程式中。
---------------------------------------------------------------------
輸入輸出:
<STDIN> 讀取一行
<> 讀取程式調用參數的輸入資料流。
@ARGV 程式調用參數列表。可以強制定義值供<>讀取。
open 開啟檔案控制代碼
select 控制代碼 : 改變預設的檔案輸出控制代碼
die 輸出錯誤資訊。
$! 作業系統錯誤的相關資訊。
--------------------------------
雜湊:
$雜湊名{key} 訪問hash中的元素
%雜湊名 指代整個雜湊
reverse %hash 建立一個反轉hash
=> 胖箭頭用於建立hash
%hash = ("a" => 1 , "b" => 2, "C" => 3);
@ks = keys %hash
@vs = values $hash
$count = keys $hash ##得到hash的索引值數
while ( ($key,$value) = each %hash ) {} ## each 函數羅列鍵/值
if(exists $hash{"key"}){} 檢查hash中是否有某個key
delete $hash{"key"} 刪除key/value
%ENV雜湊 機器系統內容hash Eg: $ENV{PATH}
-------------------------------------
Regex:
m/ / 模式比對操作符,簡寫為 / /, 也可以 m% %
=~ 綁定操作符 拿右邊的模式來匹配左邊的字串
Eg: if($so =~ /\brub/) {}
$1,$2 ... 圓括弧模式組的匹配結果。
%+ 此hash儲存正則匹配的結果。key是特殊標籤。Eg:
use 5.010;
my $names = 'Fred or Barney';
if( $names =~ m/(?<name1>\W+) (?:and|or) (?<name2>\W+) ) {
say "I saw $+{name1} and $+{name2}"
}
$` 匹配起始位置之前的字串。
$& 匹配結果。
$' 匹配結果到結束位置的字串。
s/// 替換模式. Eg:
s/Braney/Fred/ # 把Barney替換為Fred.
$_ = "green scaly dinosaur"
s/(\w+) (\w+)/$2,$1/; #替換後為 "scaly,green dinosaur"
@fields = split /separator/, $string;
Eg: my @args = split /\s+/,$some_input;
my @fields = split; # 預設以空白字元分割$_;
my $result = join $glue, @pieces;
$^I 預設值是undef,備份檔案的副檔名
-----------------------------------------
unless(if反義),unless-esle,until(while反義),if-elsif,
for,foreach
迴圈控制:
last : 立即終止迴圈(break)
next : 結束當前這次迭代 (continue)
redo : 返回本次迴圈的頂端
--------------------------------
glob: my @all_files = glob "*"; #取得目前的目錄中的所有檔案,並按字母順序排序。
簡寫: my @all_files = <*>;
open 控制代碼
opendir 目錄控制代碼 :開啟目錄控制代碼
readdir 目錄控制代碼 :讀取目錄控制代碼
unlink 參數列表 :刪除檔案
Eg: unlink glob "*.txt" #刪除*.txt檔案
rename "old","new" 重新命名
mkdir 目錄名,0755 :建立目錄
rmdir 目錄名 :刪除目錄
chmod 0755 "fred","barney"; :修改檔案或目錄的許可權
chown $user,$group,glob "*.txt"; : 更改隸屬關係
utime $now,$ago,glob "*.txt"; : 修改時間戳記
-------------------------------------
$where = index($total,$sub); #索引搜尋首次出現字串的位置
$where1 = index($total,$sub,2) #從第2個職位開始搜尋
rindex函數搜尋字串最後出現的位置(也是從頭開始搜尋),
第三個參數是限制返回的最大位置
substr 字串,起始位置(-1表示最後一個字元),長度(可省略)
substr還可以賦值,Regex替換。Eg:
substr($string,0,5) = "Goodbye";
substr($string,-20) =~ s/fred/barney/g;
<=> 比較兩個數字並返回-1、0或1.
cmp 比較字串
$hash{$a} <=> $hash{$b}
Eg:
my @temp = qw/4 3 2 0 9 6 5 1/;
my @result = sort { $a<=>$b } @temp;
---------------------------------
~~ 智能匹配操作符(5.10)
1.替代 =~
2.%hash ~~ /pattern/ 遍曆hash中的所有鍵,逐個匹配,如成功停止,返回真
3.@enum1 ~~ @enum2 數組相等
4.@enum ~~ $num 判斷$num是否在@enum中,順序可互換。
given ($flag) {
when(/fred/i) { say 'Name has fred in it'}
when('Fred') { say 'Name is Fred'}
default { say "I don't see a Fred"}
}
foreach (@names) {
when () {}
when () {}
default {}
}
---------------------------------
$$ 當前啟動並執行進程數字代號。
`` 反引號。
$@ eval運算式發生錯誤時的錯誤資訊
--------------------------------
=~ 綁定操作符
~~ 只能匹配操作符