標籤:
同時學perl、python和shell指令碼會很容易將它們的文法搞混,本文主要是一個個人的總結,方便要用時的查詢。
perl基本文法、安裝、協助文檔
檔案頭格式:
#!/usr/bin/perluse strict;use warnings;
運行perl指令碼:
#調用perl程式perl test.pl#可執行指令碼chmod 755 test.pl./test.pl
基本讀寫:
#鍵盤輸入$a = <STDIN>;chomp($a);print $a;#檔案輸入open(IN, "<test.txt") or die "Cannot open file:$!\n";open(OUT, ">test.txt") or die "Cannot open file:$!\n";while(<IN>){ chomp; print OUT "1. $_"; last;};close(IN);close(OUT);
基本控制流程:
if( ){}elsif( ){}else{}
print "Hello!" if (1 == 1); #簡寫
while( ){ $count++;}for($i; $i <= 10; $i++){}foreach (@array){ print $_;}
last; #breaknext; #continue
資料結構:標量變數($),列表(),數組(@),雜湊(%),檔案控制代碼(<>)
文法結構:語句以分號(;)結束,代碼塊使用花括弧{}劃分,動態語言不必指明變數類型
單雙引號:單引號q(),所有原樣輸出;雙引號qq(),允許插入變數
文法慣例:perl中很多地方括弧()是可由可無的,特別是內建函數,如print、split等;可以使用遞增遞減運算子
安裝:Windows裝Active版本,(perl -v)檢查;linux裝,
$ tar -zxvf stable.tar.gz -C dir$ sh Configure # 配置$ make # 安裝$ make test #測試是否make成功$ make install
協助文檔:perldoc命令
perldoc #會提示用法perldoc perl #會顯示詳細用法perldoc perlfunc #三大模組perldoc perlopperldoc perlfaq
建議使用瀏覽器查看本地的HTML文檔:
file:///D:/Program%20Files/Perl64/html/index.html
關鍵字:特殊變數
$_:預設參數,就是當前的預設巨集指令引數,在讀檔案<FILE>、迭代for (@array)、split / /、print中非常重要
$!:標準錯誤輸出,一般只與or die語句連用
$1:Regex模式中第一個括弧內的變數,如(.*)、(string),以此類推
@_:sub函數傳遞的參數數組,
關鍵字:字串運算子
連接字串:共置運算子(.)
轉義:反斜線\
區分標量和字串:{}顯示指定變數名,如${name}space
重複運算子(x),如“-”x 10
關鍵字:數組、雜湊
列表:列表是常量,由圓括弧()建立,中間用逗號隔開
# 範圍運算子@a = (1..10)@b = (1..10, 21..30)@list=(aa..zz);
建立數組:用列表()建立數組
引用數組:用方括弧[ ]下標引用數組
建立雜湊:用列表()建立雜湊,為了好看,索引值對以=>形式組織;也可以單個建立
引用雜湊:用花括弧{}引用雜湊
關鍵字:數組操作
關鍵字:(數值/字串)比較
數字比較:(==、>、<、>=、<=、!=)
字串比較:(eq、gt、lt、ge、le、ne)
關鍵字:print用法
print:可以直接接變數$var、@array、%hash,輸出的就是不帶空格斷行符號,將所有元素連在一起,數組一坨,雜湊一坨,其中雜湊順序是亂的。
print:可以帶雙引號,數組之間有空格,可以分辨了;雜湊失效了,沒有內容,就顯示出%hash。
print:輸出到檔案時,檔案控制代碼在前,中間是空格(不能是逗號),後面是輸出內容
關鍵字:q()、qq()、qw()、qx{}
q():用單引號將內容括起來
qq():用雙引號將內容括起來
qw():用單引號將空格隔開的序列組裝成數組,會屏蔽裡面的標量
# 兩者等價,最好不要有內嵌變數@a = qw(abc def ghi) @b = (‘abc‘,‘def‘,‘ghi‘)
qx{ }:捕獲命令輸出
$directory = `dir`;$directory_2 = qx{dir};
關鍵字:Regex、模式
關鍵字:函數
標準函數格式:
關鍵字:常用內建函數
int(5.20);
length(“nose”);
lc(“ME TOO”);
uc(“hal 9000”);
cos(50);
rand(5)
關鍵字:堆棧操作函數
push()
pop()
shift():將最後一個元素移走,常用語處理函數參數
unshift()
關鍵字:命令列
關鍵字:上下文
關鍵字:chomp
chomp是運算子,可以用圓括弧,也可以用空格;它會改變參數變數,其傳回值是1或0
$a = "lizhiixn\n";print $a;print "next\n";chomp $a;print $a;print "next";
$b = chomp($a); #極少這麼用
perl 文法速查