[PERL] 03-條件式判斷@新精讚

文章推薦指數: 80 %
投票人數:10人

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



請為這篇文章評分?