[精讚] [會員登入]
1102

[PERL] 03-條件式判斷

perl的條件式判斷

此文完整連結 http://n.sfs.tw/11658

複製連結 [PERL] 03-條件式判斷@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2018-01-03 02:07:01 最後編修
2017-08-19 21:38:01 By 張○○
 

PERL的條件式判斷有這幾種

if
if .. else
if .. elsif .. else
unless

其中 if, unless又可分為前置和後置表示法兩種,可說非常的多元,一不小心就寫錯了,而PERL本身沒有提供 switch .. case 這種東西,但能用替代的方法,參考[1]。

前置 if

語法

if( 條件 ){  處理.... }

上面的大括號是絕對不能省略的,就算只有一行也不能省略!其餘和別的程式語言都一樣。

範例

if( $day == 1 ) { print "今天是1號"; }

後置 if

語法

處理.... if 條件;

後置的表示法中沒有大括號,而且條件也不用小括號包起來,最後還多了一個分號 ';'。

處理的部分只能有一行指令,關於前置後置的差異和比較可以參考 [PERL] 前置if和後置if (if修飾子)的差別

範例

print "現在是12月" if $month >11;

print "現在是12月31" if $month >11 and $day==31;

if .. else

語法

if( 條件 ){  符合時處理.... } else {  不符合時處理.... }

上面的大括號是絕對不能省略的,就算只有一行也不能省略!其餘和別的程式語言都一樣。

if .. elsif .. else

多重條件式判斷

語法

if( 條件1 ){  符合時處理.... } elsif( 條件2 ){  符合時處理.... } elsif( 條件3 ){  符合時處理.... } 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,中文也可以叫作「除了」,建議你用這個得很小心,你得有一個清楚的腦袋,很容易就搞混了。

語法

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 $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-基本比對

延伸閱讀

[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

你可能感興趣的文章

[PERL] 17-參照 PERL的參照,就是指標

[PERL] Perl 不立即輸出的列印緩衝區問題 解決Perl 不立即輸出而是最後一次輸出的列印緩衝區問題

[PERL] 常態分配亂數產生函數 一般而言我們使用程式內建的 rand 函數取得的亂數是平均分配的,但如果需要常態分配的亂數產生器該怎麼做?

[PERL] 12- 副程式 Perl 的副程式就是所謂的函數

[PERL] 14-進階比對 #1--取回比對內容 perl的正規表達式進階比對

[PERL] split 寫法 Perl 將字串分開可以用 split 這個函數,此函數可以用Regex作分隔判斷

PERL一次讀取檔案所有內容的方法($/) perl可以使用slurp mode一次讀完檔案所有內容的方法及一些範例

[PERL] 19-模組的安裝和維護 模組的安裝和維護

[PERL] 檢查IP是否在某個網段內:matchcidr 檢查IP是否在某個網段內 matchcidr in perl

自行撰寫syslog server建立資訊安全控管中心#3 -- 程式下載和安裝 利用PERL將syslog收攏到資料庫的程式,程式下載和安裝

我有話要說


限制:留言最高字數1000字,超過部分會被截掉。請注意:留言不可帶有網址,會被濾掉。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

HP SAS硬碟leds燈號說明 HP SAS硬碟leds燈號(hp g7/g6系統適用)說明

[jQuery] select 元件的取值及給值 html中的元件select,在jquery中要如何使用?

對物品的感情 這個議題很奇怪,可是大部分的人都會有,物品是死的,壞了就淘汰,出新的就被替換。為何會有情感?

Sound of Music @比利時中央車站 比利時中央車站的快閃表演:「真善美」

安裝git centos/freebsd/windows安裝git