今天來看看標量的操作符,標量可以分為兩類:一類是數字,另一類是字串。在perl中這兩類資料可以相互轉化,但是操作還是有區別的。
下面先介紹數字類型的操作符:
數字類型的運算操作符有一下幾種:
+(加),-(減),*(乘),/(除),-(取反)。
不會的舉手,好沒有。
下面講一些難的。
第一個是“%”(取餘)。嗯,會C語言的可以退場。這個操作符的使用方法和“/”差不多,但是結果是除之後的餘數。例如:
$a=6%5;這時$a的值為1;
$b=5%6; 這時$b的值為5。
如果在進行求餘運算時不是整數,那麼四捨五入後進行運算,不可以對0求餘噢!
第二個是冪運算(**)。
$c=2**3; 這時$c的值為8。相信我,我寫了一個程式實驗過的,程式如下:
#!/user/bin/perl -w
use strict; {
my $a=2**3;
print $a;
}
還有兩種我們應該知道的運算子是“++”和“--”。“++”在自身基礎上面加一,“--”在自身基礎上減一。這種運算在c裡面經常用的。
數位比較子有下面幾個: “<”,“>”,“<=”,“>=”我想這幾個我就不用解釋了。再有一個就是“==”這個運算子用來對比兩個數字是否相等。然後就是“!=”表示兩個數字不等。
還有一個好玩的比較子是“<=>”,這個運算子當左邊的數字小於右邊的時返回-1,相等時返回0,當左邊的大於右邊的時返回1。
另外就是位操作符了,和c一摸一樣。
位與:& 位或:| 位非:~ 位異或:^ 左移:$x << 1 右移:$x >> 2
註:不要將&用於負整數,因為PERL將會把它們轉化為無符號數。
然後要講一講的是賦值操作符,最基本的賦值操作符是“=”,(廢話!)然後一種是“+=”表示在自身基礎上面增加。例如:
$d=3; $d+=3; 這時$d就等於6了。
相應的還有“-=”,“*=”,“/=”,“**=”,“^=”,“&=”,“|=”,“~=”。 數位操作符大致就有這些了。
下面是關於字串的操作符的介紹。兩個字串相加(串連)用“.”進行。例如:
$e="hello "."all";
這時$e的值為“hello all”相應的也就有“.=”運算了。
另外還有一個運算子是x,沒錯,就是它。用來表示……只可意會,不可言傳。
$f="f"x5; 此時$f的值為"fffff",明白了吧?
字串的比較用以下的操作符進行:
“lt”意為“小於,less than”;
“gt”意為“大於,greater than”;
“eq”意為“等於,equal”;
“le”意為“小於等於,less than or equal”;
“ge”意為“大於等於,greater or equal”;
“ne”意為“不等於, not equal”;
“cmp”意為“比較,返回 1, 0, or -1,compare”。
可以看出來字串的操作和數位操作是相對的。
另外對字串可以進行“++”運算,這時將會把字串的ascii碼加一。但是"z"++卻是"a","Z"++ 是"A","9"++是0,"ab99"++將會得到"ac00"。呵呵,很好玩吧?字串是沒有-,*,/等運算的。如果我們對字串進行這些運算則表示我們要把字串轉換成數字然後進行計算。如果這個字串是"111"還好說,如果我們強制perl把例如"aaaaa"一類的字串進行數字運算,perl會把這些字串轉換成0。因此"aaa"--將會得到-1。很好玩是不是?呵呵,perl還有很多好玩的東西。
對標量進行操作還可以使用下面的函數。
第一個是length(),這個函數可以返回變數列印出來的長度。例如:
length(23),將會返回2;
length("hahaha"),將會返回6;
length(1)將返回1。
在perl5中length("你好"),將會返回4,聽說在perl5.6中將不會。我沒有實驗過,不好說什麼。
第二個函數是chop()。這個函數將會節掉字串中的最後一個字元,例如:
$g="aaa";
chop($g);
這時$g中的值是"aa";同時chop會返回它所截下來的字元。試一試 $g="你好"; chop($g); 會發生什嗎?
第三個函數是chomp(),這個函數僅僅將字串末尾的分行符號裁掉。
第四個函數是substr()這個函數可以從一個字串中截取一段長度的字串並將其返回。例如:
$h="hello all";
$i=substr($h,3,5)
將會從“hello all”中截取長度為5的字串,就是"lo al"。試一試這樣呢?
$h="你們好嗎?";
$i=substr($h,3,5);
第五個很有用的函數就是defined(),這個函數用來判斷一個資料是否已經定義。在perl中,一個資料如果沒有定義,那麼他將會是一個叫做undef的特殊值。 defined()是一個非常有用的函數。至少我經常用。有其是在判斷cgi輸入的時候。