在學習Perl的基礎之前,還是希望大家有空去看以下Perl的簡介。百度百科
一、Perl的基本類型
Per的基本類型分為兩種:數值型和字串型。
數值型可細分為 整數型。如123。 浮點型。如123.123、0.123456。 科學計數型。如1.23E2、1.23e2。 大數實值型別。如1_156_123_585_123。
字串型 字串。如“123456”,‘123’,qq(this is a string too!)
二、用變數儲存基本類型值
Perl定義變數很簡單。格式為:$變數名 (PS:Perl的程式員肯定是想錢想瘋了);引用的方式也很簡單:$變數名。
下面給出一個簡單的樣本:
#!user/bin/env perl -w$int = 123456;$float = 123.456789;$sci_notation1 = 1.2E10;$sci_notation2 = 1.2e10;$big_num = 1_789_854_654_894_654_355_223;$string = "this is a string";printf "int value :$int\n";printf "float value :$float\n";printf "sci_notation1 value :$sci_notation1\n";printf "sci_notation2 value :$sci_notation2\n";printf "big_num value :$big_num\n";printf "string value :$string\n";
輸出結果如下
int value :123456float value :123.456789sci_notation1 value :12000000000sci_notation2 value :12000000000big_num value :1.78985465489465e+021string value :this is a string
簡單解釋一下: 科學技術型數值中E不區分大小寫 大數實值型別採用“_”進行分隔僅是為了方便閱讀,上面採用千分法,你也可以採用萬分法,也可以直接不使用“_” print和printf均為內建的輸出函數。如果想要接收鍵盤輸入資料可以採用後面的格式:$from_key_board = <STDIN>; 從DOS視窗接收輸入,儲存到$from_key_board中
注意: 如果資料過長,會有精度上的舍入。 字元類型的表示 可以使用雙引號"",也可以使用單引號'',必須成對出現。 當單引號內部內容包含單引號或雙引號內部內容包含雙引號時,可以採用反斜線“\”進行轉義。如:"Tom said:\"it is rainning outside!\"". Perl提供另外一種字串表示方式qq代表雙引號(not Tencent QQ),q代表單引號,配合界限符使用。界限符可以使任意非空格、tab、換行字元。例如:qq(Tom said :"it is raining outside")。但是不推薦使用數字和字母作為界限符,會造成程式閱讀困難. 但是也會碰到第二點的問題,如果內部字元創包含界限符,1.成對出現的是允許的,但是會降低可讀性。2.使用逸出字元。3.界限符那麼多,換一個。 上述printf輸出中有引用到之前定義的變數。這種方式僅在“”或pp內部可以使用,其他方式不可。
三、Perl中運算子
多數都和其他語言一樣,如果你有一定的語言基礎,可以只看紅字部分
賦值運算子 = 賦值 += 例如:$num += 1; 等價於$num =$num+1; -= 例如:$num -= 1; 等價於$num =$num-1; *= 例如:$num *= 1; 等價於$num =$num*1; /= 例如:$num /= 1; 等價於$num =$num/1; %= 例如:$num %= 1; 等價於$num =$num%1; #模數,除以那個數取餘數 **= 例如:$num **= 2; 等價於$num =$num**2; #**代表冪,$num的2次方 .= 例如:$str.=“ string” 等價於 $str = $str." string";# . 代表串連符,將兩個字串拼接起來
算術運算子 + - * / % 取餘數 ** 冪指數 10**2 即10的2次方 ++ -- . 連接字串,"this is a "."string" = "this is a string"
數值關係運算子 > 大於 >= 大於等於 < 小於 <= 小於等於 == 等於 != 不等於 <=> 大於:1;等於:0;小於:-1;
字串關係運算子 gt 大於 ge 大於等於 lt 小於 le 小於等於 eq 等於 ne 不等於 cmp 大於:1;等於:0;小於:-1;
邏輯運算子 &&或and 與 全真則真 || 或or 或 全假則假 。或not 非 真假假真 xor 異或 同假異真
位元運算 & 按位與 | 按位或 ~ 按位非 ^ 按位異或 << 左移位 >> 右移位
特殊運算子 .. 區間表示 如 1..3 等價於 1,2,3 。: 三目操作符,滿足。前條件執行:前內容,不滿足執行:後內容
檔案資料運算子 -r $file 如果$file是可讀取的話,返回1的值 -w $file 如果$file是可寫入的話,返回1的值 -x $file 如果$file是可執行檔話,返回1的值 -e $file 如果$file存在的話,返回1的值 -o $file 如果$file是被執行才所擁有的話,返回1的值 -s $file 返回$file的檔案大小(bytes) -f $file 如果$file是正常檔案的話,返回1的值 -T $file 如果$file是文字檔的話,返回1的值 -B $file 如果$file是Binary檔案的話,返回1的值 -M $file 返回$file檔案最後一次更改時間到現在的日期數
特別注意:
1.Perl不刻意強調變數的初始化,如果一個變數沒有初始化就進行運算,則會取其預設值:數字為0,字串為""Null 字元串。
2.Perl中字串可以和數值進行運算,如果字串看上去不像個數字,則會用0代替
3.千萬注意數值型關係運算子和字串型關係運算子的區別。數字比較時用數值關係運算子,字串比較時用字串關係運算子。
如果在字串比較時使用了數值關係運算子,如: $name="Jack";$name == "Tom";運算的結果總會是1,原因參見 2。
(到時候你從資料庫裡取出幾千萬的資料別怪我沒說啊,等著被專案經理打死吧)
4.移位操作中<<與作業系統位元有關,如64位作業系統中 1<<64 =1,每移動64位為一個迴圈。
5.Perl中認為0,Null 字元串,未定義值undef為false,其他均為true。
6.字串關係運算中,對兩邊的字串從左至右進行位元壓縮,比較依據Ascii碼錶順序
7.&& 和and並不完全相同,&&要早於and執行
8.邏輯運算子並不是返回0或1,而是返回判斷結束前處理條件的結果。如 1&&2 返回2 ,0&&2返回0,1||2返回1。
Perl常用函數
printf:輸出函數,用法同c語言中一樣;
length:輸出包含內容的長度:如length("asdf")=4;
chop:去除最後一個字元:chop("abcd")="abc";
chomp:去除尾部的斷行符號換行:chomp("abcd\n")="abcd";
substr($string,m,n):給定字串,從地m位開始截取n位長度:substr("Hello",2,3)="llo",計數從0開始,n可省略,即至尾部