1、變量
scalar:$varname 變量
數組: @varnanme
Hsah: %varname
文件: 通常大寫字母
2、變量名的命名規則
簡單變量以$開頭後面跟字母數字或者下劃線;
區分大小寫;
變量名長度不限;
沒有關鍵字,但是不能和內置變量重名;
數值:
12 -12 12e3 #(科學計數法,e不區分大小寫) 1_222_2333 #-只是分隔符,便於閱讀,perl語句執行時會自動忽略 012 #0開頭的默認是八進制數 0x2f #十六進制數,f不區分大小寫
#/usr/bin/perl $a=1283_11_31_51; print "$a \n";
結果:
[root@localhost tmp]# perl txt 1283113151
浮點
11.5 -.3 .3 0.3 2.5E6 #(e不區分大小寫,後面數字爲1-3位,整數位15位有效數字,超出則截斷) 指數型浮點:指數爲-309~308 ,太小則數值爲0,太大則爲1.#INF
字符串
"" 或者''
最少爲爲空"",最多可以佔滿空餘內存,結尾不包含c語言的null('\0')
變量引用
變量引用使用變量名的最長匹配爲原則:
$var="it"; $varing="ms"; print "\$var is $var\n" #此處最長匹配輸出的爲$varing的值 print "\$var is ${var}\n" #這是正確引用$var的方法 [root@localhost tmp]# perl txt $var is it $var is ms
轉義字符
perl的轉義字符和其他語言的轉義字符類似:
\a | \b | \l | \xnn | ||||
\cn | \e | \r | '' | ||||
\L | \f | \t | \' | ||||
\n | \Q | \nnn | \\ |
字符比較
數值比較:
>,<,==,<=,>=,!=,<=>
<=>:$a <=> $b;
$a < $b,返回-1
$a = $b,返回0
$a > $b,返回1
perl會自動轉換操作數到int,不能轉換的轉換爲0
字符串比較:
lt gt ge eq le ne cmp
安照字母表的順序:num<大寫<小寫 (a-z)
從左向右比較
當一個是另一個前綴時,較長的一個值大:god < godness
字符串可以從右向左進位,字母和數字分別進行
自動轉換操作數爲字符串
cmp用法同<=>
空字符串,0,undef的爲假
字符串的連接
. 連接
print $x='a'.'b' ; #$x='ab'
#/usr/bin/perl $a="ace"; $b="me"; print "$a$b\n"; #把$a$b分別替換 print $a.$b; #把$a$b進行字符串拼接,作爲一個整體 [root@localhost tmp]# perl txt aceme aceme
x 重複 x次數小於1,則爲空,x的前後需要空格
#/usr/bin/perl $a='ox' x 5; print "$a\n"; [root@localhost tmp]# perl txt oxoxoxoxox
邏輯運算
&& and || or ! not xor
先計算邏輯運算左在計算右邊
位操作
& | ~ ^ << >>
操作數爲二進制整數,小數則截取爲整數處理
賦值運算
= += -= *= /= %= **= &= |= ^= .=
($a=$b)+=3 #等價於 $a=$b; $a=$a+3;
++ --
可以用於字符串的自增,z Z 9時進位:
$a='az',$a++; →$a='ba'
不可以用於字符串的自減運算,$a--,按數值運算,轉換爲0,再自減
$a='az',$a--; →$a=-1
字符串含有非字母數值,數值位於字母中間,++運算轉爲0在自增
$a='a2z',$a++; →$a=1
$b=++$a先執行自增在執行賦值,$b=$a++先執行賦值在執行自增
$a='a2z'; $b=$a++; →$b='a2z'
$a='a2z'; $b=++$a; →$b=1
只能作用於單一變量:
($a+$b)++;#這種是錯誤的
條件運算
條件?真:假
優先執行條件表達式,真執行?後的內容,假則執行:後的內容
$result=$var==0?14:7
執行條件語句:$var==0,成立則執行賦值 $result=14,不成了則$result=7
條件變量在等號左邊
$var==42?$var1:$var2 =14
各種運算的優先級
++/-- < <= > >= lt le gt ge ?: -~! == != <=> eq ne cmp = += *= ** |^