自動目錄
PERL的條件式判斷有這幾種
if
if .. else
if .. elsif .. else
unless
其中 if, unless又可分為前置和後置表示法兩種,可說非常的多元,一不小心就寫錯了,而PERL本身沒有提供 switch .. case 這種東西,但能用替代的方法,參考[1]。
前置 if
語法
上面的大括號是絕對不能省略的,就算只有一行也不能省略!其餘和別的程式語言都一樣。
範例
if( $day == 1 ) { print "今天是1號"; }
if( defined($day) ){ print "\$day變數有定義"; }
後置 if
語法
後置的表示法中沒有大括號,而且條件也不用小括號包起來,最後還多了一個分號 ';'。
處理的部分只能有一行指令,關於前置後置的差異和比較可以參考 [PERL] 前置if和後置if (if修飾子)的差別
範例
print "現在是12月" if $month >11;
print "現在是12月31" if $month >11 and $day==31;
if .. else
語法
上面的大括號是絕對不能省略的,就算只有一行也不能省略!其餘和別的程式語言都一樣。
if .. elsif .. else
多重條件式判斷
語法
不要拚錯 'elsif',拚成 elseif 或是 else if 是不對的。
大括號是絕對不能省略的,就算只有一行也不能省略。
具有先符合先跳出的特性,請看範例。
範例
$temp= 32; if($temp <20){ print "涼冷"; } elsif($temp <24){ print "舒適"; } elsif($temp <28){ print "尚可"; } elsif($temp <33){ print "炎熱"; } else{ print "會中暑"; }
結果
炎熱
前置 unless
這是PERL特有的條件式,意思就是 if not,中文也可以叫作「除了」,建議你用這個得很小心,你得有一個清楚的腦袋,很容易就搞混了。
語法
同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
語法
和 if 的後置一樣,不過是反義的
字串的比對
下二個單元會介紹運算子,這裡先提一判斷式會用到的運算子,在數值和字串用的並不一樣,這是PERL的特色
數值 | 字串 | 意義 |
$x == $y | $x eq $y | 等於 |
$x != $y | $x ne $y | 不等於 |
$x < $y | $x lt $y | 小於 |
$x > $y | $x gt $y | 大於 |
$x <= $y | $x le $y | 小於等於 |
$x >= $y | $x ge $y | 大於等於 |
$x <=> $y | $x cmp $y | 若$x 等於 $y 則為0 若$x 大於 $y 則為-1 若$x 小於 $y 則為1 |
範例
$x= 15; $y= 9; print $x cmp $y; #-1 print $x <=> $y; #1 if($x gt $y){ print "\$x gt \$y"; } #空 if($x > $y){ print "\$x > \$y"; } #印 $x > $y
上一篇 02-註解、變數和常數
回到目錄 01-撰寫第一隻PERL程式
下一篇 04-基本比對