[PERL] 03-條件式判斷@新精讚
文章推薦指數: 80 %
PERL的條件式判斷有這幾種 ... 處理的部分只能有一行指令,關於前置後置的差異和比較可以參考[PERL] 前置if和後置if (if修飾子)的差別 ... 字串的比對.
[PERL]03-條件式判斷
URLLink//n.sfs.tw/11658
2017-08-1921:38:01By張○○
PERL的條件式判斷有這幾種
if
if..else
if..elsif..else
unless
其中if,unless又可分為前置和後置表示法兩種,可說非常的多元,一不小心就寫錯了,而PERL本身沒有提供switch..case這種東西,但能用替代的方法,參考[1]。
前置if
語法
if(條件){ 處理....}
上面的大括號是絕對不能省略的,就算只有一行也不能省略!其餘和別的程式語言都一樣。
範例
if($day==1){print"今天是1號";}
if(defined($day)){print"\$day變數有定義";}
後置if
語法
處理....if條件;
後置的表示法中沒有大括號,而且條件也不用小括號包起來,最後還多了一個分號';'。
處理的部分只能有一行指令,關於前置後置的差異和比較可以參考[PERL]前置if和後置if(if修飾子)的差別
範例
print"現在是12月"if$month>11;
print"現在是12月31"if$month>11and$day==31;
if..else
語法
if(條件){ 符合時處理....}else{ 不符合時處理....}
上面的大括號是絕對不能省略的,就算只有一行也不能省略!其餘和別的程式語言都一樣。
if..elsif..else
多重條件式判斷
語法
if(條件1){ 符合時處理....}elsif(條件2){ 符合時處理....}elsif(條件3){ 符合時處理....}else{ 不符合時處理....}
不要拚錯'elsif',拚成elseif或是elseif是不對的。
大括號是絕對不能省略的,就算只有一行也不能省略。
具有先符合先跳出的特性,請看範例。
範例
$temp=32;
if($temp<20){print"涼冷";}
elsif($temp<24){print"舒適";}
elsif($temp<28){print"尚可";}
elsif($temp<33){print"炎熱";}
else{print"會中暑";}
結果
炎熱
前置unless
這是PERL特有的條件式,意思就是ifnot,中文也可以叫作「除了」,建議你用這個得很小心,你得有一個清楚的腦袋,很容易就搞混了。
語法
unless(條件){ 處理....}
同if上面的大括號是絕對不能省略的,意思是「除了符合條件之外,一律要處理。
」,或是說「符合條件的不處理」
範例
以下全部等義:
if($age<18){print"未滿18歲,禁止進入";}
unless($age>=18){print"未滿18歲,禁止進入";}
unless(not$age<18){print"未滿18歲,禁止進入";}
if(!($age>=18)){print"未滿18歲,禁止進入";} #注意!後面有小刮號
if(not$age>=18){print"未滿18歲,禁止進入";}
這和上面不等義,原因是!的優先權大於>=會先把$age處理掉,留待到運算子再提
if(!$age>=18){print"未滿18歲,禁止進入";}
unless(!$age<18){print"未滿18歲,禁止進入";}
後置unless
語法
處理....unless條件;
和if的後置一樣,不過是反義的
字串的比對
下二個單元會介紹運算子,這裡先提一判斷式會用到的運算子,在數值和字串用的並不一樣,這是PERL的特色
數值
字串
意義
$x==$y
$xeq$y
等於
$x!=$y
$xne$y
不等於
$x$y
$xgt$y
大於
$x<=$y
$xle$y
小於等於
$x>=$y
$xge$y
大於等於
$x<=>$y
$xcmp$y
若$x等於$y則為0
若$x大於$y則為-1
若$x小於$y則為1
範例
$x=15;
$y=9;
print$xcmp$y;#-1
print$x<=>$y;#1
if($xgt$y){print"\$xgt\$y";}#空
if($x>$y){print"\$x>\$y";}#印$x>$y
上一篇02-註解、變數和常數
回到目錄01-撰寫第一隻PERL程式
下一篇04-基本比對
延伸閱讀
[PERL]前置if和後置if(if修飾子)的差別
參考資料
[1]http://wywu.pixnet.net/blog/post/23122180-%5Bperl%5D-%E4%BD%BF%E7%94%A8-switch-%E6%8E%A7%E5%88%B6%E7%B5%90%E6%A7%8B
延伸文章資訊
- 1[PERL] 03-條件式判斷@新精讚
PERL的條件式判斷有這幾種 ... 處理的部分只能有一行指令,關於前置後置的差異和比較可以參考[PERL] 前置if和後置if (if修飾子)的差別 ... 字串的比對.
- 2Perl的基本語法
# 不用再指定變數的data type,這樣不是比printf()方便多了嗎? print "Scalar value is $x\n"; # . 是字串加法的運算子,上下這兩行是等效 ...
- 3[PERL] 04-基本比對@新精讚
字串比對是PERL最大的功能和利器,它有一組獨特的運算子:. =~ 比對符合 !~ 比對不符合. 在學習比對時,對於正規表達式Regular Expression得多多著墨 ...
- 4perl字串比較的疑問 - 酷!學園
print "兩字串不相同"; }[/color] } close(FHD); 問題來了假如$f1 與"exe" 不相同才會輸出至螢幕但是我實作的結果是相同也印出來後來我用cmp去比對兩 ...
- 5Perl :比較操作符(Comparison. Operators ) - 拉不拉多的夢幻世界
eq. 等於. Equal to. le. 小於等於. Less than or equal to. ge. 大於等於. Greater than or equal to. ne. 不等於. N...