Perl文法 Perl運算子簡介
1.Perl運算子
1.1 算數運算子
Perl固然在變數與資料範例都和C大不不異,然而它的運算子和C險些不異,除了C的範例轉換運算子type,指標引用運算子*ptr和布局成員選擇符,其他C的運算子險些完全呈現在Perl裡,Perl新增了幾個新運算子,好比在字元處置方面.
◆Perl到今朝撐持的算數運算子有一些幾種:
+加法運算子
-減法運算子
*乘運算子
/除運算子(只對浮點數運算)
%模數運算子(只對整數運算)
下面給出Perl算數運算的一些執行個體:
$x=2.5;
$y=3;
print($x+2*$y);
print(7/$y);
printint(7/$y);
print(7%$y);
print(7.5%$y);
Perl還撐持遞增和遞減運算子:
++遞加
--遞減
◆Perl新增了乘方運算子:**,請看下面的例子:
$x=2**3;#2的3次方
$y=2**0.5;#2的平方根
$z=-2**-3;#成果是:-0.125
1.2 Perl文法之位元運算符
位元運算符對二進位運算式的整數情勢舉行處置,運算成果為整數.若是位元運算符的操縱數是字串或分數,Perl起首把它們轉換成整數,並用32位長整數情勢暗示它們.Perl撐持全部的C說話運算子:
|位或運算子
&位與運算子
.位非運算子
<<位左移運算子>>位右移運算子
有關位元運算符的具體內容,請參看C說話有關的內容,這裡我們就未幾講了,只舉幾個例子:
$x=5;
$y=3;
print$x|$y;#成果是7(二進位暗示:111)
print$x&$y;#成果是1(二進位暗示:001)
print$x<<2;#成果是20(二進位暗示:10100)print$x>>1;#成果是2(二進位暗示:10)
1.3Perl文法之比力運算子
比力運算子的功效是比力兩個操縱數的值.Perl在舉行比力運算前,會先將字元操縱數轉換為數字.Perl用專門的字串比力運算子對純字元舉行表運算.
1.4Perl文法之邏輯運算子
邏輯運算子測試布林運算式的值,其成果為真或假.Perl以為邏輯運算子的每個操縱數都為布爾值(即真或假).Perl的邏輯運算子包羅:
||邏輯或運算子;
&&邏輯與運算子.
Perl按從左至右的挨次計較邏輯運算式.當邏輯或運算子的一個操縱數為真,大概當邏輯與運算子的一個操縱數為假時,Perl將停止邏輯運算式的計較.Perl操縱這種短迴路計值快速計較運算式的值.是以,這兩個運算子也叫短迴路AND和短迴路OR.
除了以上兩個運算子,另有以下三種邏輯運算子:
!負運算子
?:前提運算子
,挨次計值符
運算子!否認操縱數的布爾值,相稱於邏輯非.?:前提運算子,有3個操縱數,表達情勢為:condition?true-result:false-result
下面的語句經由過程?:運算子,實現拜候許可權的區分:
$access=($usereq'流雲'?'root':'guest');
挨次運算子(,)從嚴酷意義上講並不是邏輯運算子,由於它並不查抄操縱數的真假.Perl從左至右的計較逗號運算子,並返回最右邊的操縱數,都好運算子是從C連續出來的,詳細利用可以參考C裡的用法,這裡我就不累述了.
1.5Perl文法之字元運算子
因為Perl自己是為文本處置開闢的.是以,它增添很多新的字串運算子.Perl的字串運算子包羅:
.字元毗連運算子
x字串複製運算子
=~將一個變數綁定到模式立室
!~將一個變數綁定到模式立室,取非
前兩個運算子比力簡略.此刻看看例子:print'C'.'a'.'l'x2;#輸出成果將是:Call;
後兩個運算子首要用於模式立室,今後將會有關於模式立室的詳細解說,這裡就未幾說了,我們來看看它們的例子,以領會它們的感化:
$text='本日下雨了';
print($text=~/下雨/)?'本日下雨了':'本日沒下雨';
我們看到的例子可以發明是否變數中是否包羅我們所必要的字串.
1.6Perl文法之賦值運算子
賦值運算子和C說話的賦值運算子差未幾,以下是各類賦值運算子:
=+=-=*=/=%=|=&=
^=~=<<=>>=**==.=x=
1.7Perl文法之Lvalue
在Perl和C說話中,lvalue暗示賦值運算子左邊的實體.也便是說,lvalue與變數一樣,可以給它指派值.比方在Perl號令檔案中不克不及向字串賦值,如"Bob"=32這個語句便是錯誤的!由於"Bob"不是一個lvalue,可是若是對$Bob賦值,如$Bob=32,這個語句便是準確的!由於變數$Bob是一個lvalue.
在Perl中,任何故意義的lvalue只能暗示一個實體.比方下面的第一個語句列出了表的值(便是數組的值,只不外說法紛歧樣而已),@color便是一個lvalue,第二個語句中,將表的值賦值給3個標量變數,3個變數便是lvalue:
@color=($r,$g,$b);
($r,$g,$b)=@color;
Perl的賦值運算子對錶舉行處置時,可以不合錯誤整個表舉行處置,而只針對錶的某一個大概幾個元素舉行賦值:
@times[2,5,9]=(20,40,10);
下面的語句把表的前2個值賦給兩個標量,別的部門賦給另一個表:
($arg1,$arg2,@reset)=@ARGV;
1.8Perl文法之表運算子
Perl包羅以下一些表運算子,而c沒有:
,表機關符
..規模運算子
x表複製運算子
前面我們在先容"標量與陣列變數"時,已經計划到了機關符(我以為叫分開符,更輕易明白些)規模運算子我們在用來建立數組下標規模時,也用到過!不外,請注重它的功效還遠不止這個,它還可以用來作為返回從左邊操縱數到右邊操縱數之間挨次整數的規模(包羅擺布雙方的操縱數).號令檔案凡是同時操縱規模運算子締造一個持續整數表:@digits=0..9;
如許我們就締造了一個表,其值為(0,1,2,3,4,5,6,7,8,9)
表複製運算子是一個很是風趣的東東,我們來看一個例子:@copy_3=(1,2,3)x3;這個表有9元素,其值為(1,2,3,1,2,3,1,2,3)怎麼樣?很便利吧!
1.9Perl文法之檔案運算子
Perl大大擴充了檔案處置運算子.Perl至少有27個運算子在不開啟檔案的環境下,可以或許測試檔案的資訊,可是很不幸,因為Perl在最初是UNIX的東西,以是絕大大都的運算子在我們風行的平台上:WIN9X/NT體系無法利用.但萬幸的是不是全數另有4個運算子絕對可用,並且功效不錯哦!一下便是那4個運算子:
-d測試檔案是不是一個目次;
-e測試檔案是否存在;
-s測試檔案的巨細;
-w測試檔案是否是可寫的;
前兩個運算子返回的是布爾值(即真或假),第3個運算子返迴文件的巨細(以位元組作為返回體例).下面是
利用方式:
複製代碼 代碼如下:if(-e'Perl.exe')
{
print'Filesizeis:'-s'Perl.exe';
}
else
{
print'Can\'tfindPerl.exe\n';
}
(-w'SomeFile')||die"CannotwritetoSomeFile\n";