perl 的基本數據類型

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 = += *= ** |^ 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章