一個switch語句允許測試一個變數等於多個值時的情況。每個值稱為一個case,且被測試的變數會對每個switch case進行檢查。
switch case 執行是基於Switch模組, Switch模組預設是沒有安裝的。
安裝Switch.pm 模組
使用CPAN 安裝
打開命令窗口,輸入cpan 命令,然後輸入install Switch 命令:
# cpancpan[1]> install Switch // 安裝cpan[2]> exit // 退出
Ubuntu 使用apt-get 安裝
sudo apt-get install libswitch-perl
文法
語法格式如下所示:
文法
use Switch ; switch ( argument ) { case 1 { print "數字1 " } case " a " { print "字串a " } case [ 1 . .10 , 42 ] { print "數字在列表中" } case ( @array ) { print "數字在數組中" } case / w+ / { print "正規匹配模式" } case qr /w+/ { p r int "正規匹配模式" } case ( %hash ) { print "哈希" } case ( & sub ) { print "子程序" } else { print "不符合先前的條件" } }以下是switch 語句的規則:
switch語句的括號中可以使用任意類型的標量參數。
在一個switch 中可以有任意數量的case 語句。每個case 後面跟著一個要比較的值和一個冒號。
case 語句後的標量會與switch 語句的標量比較,判斷是否相等。
當被測試的變數等於case 中的常數時,case 後面接著的語句將會被執行,直到遇到break語句為止。
switch語句可以有一個可選的else ,該語句在最後面,該語句在所有case 不匹配的情況下執行。
當匹配case 後,會執行case 語句區塊程式碼,執行後跳出switch 語句。
當匹配case 後,如果我們需要繼續執行接下來的case 語句,則需要新增next語句。
流程圖
實例
#!/usr/bin/perl use Switch ; $var = 10 ; @array = ( 10 , 20 , 30 ) ; %hash = ( ' key1 ' => 10 , ' key2 ' => 20 ) ; switch ( $var ) { case 10 { print "數字10 n " } case " a " { print "字串a " } case [ 1 . .10 , 42 ] { print "數字在列表中" } case ( @array ) { print "數字在數組中" } case ( %hash ) { print "在哈希中" } else { print "沒有符合的條件" } }執行以上程序,輸出結果為:
數字10
接下來我們來看看使用next的實例:
實例
#!/usr/bin/perl use Switch ; $var = 10 ; @array = ( 10 , 20 , 30 ) ; %hash = ( ' key1 ' => 10 , ' key2 ' => 20 ) ; switch ( $var ) { case 10 { print "數字10 n " ; next ; } # 匹配後繼續執行 case " a " { print " string a " } case [ 1 . .10 , 42 ] { print "數字在列表中" } case ( @array ) { print "數字在數組中" } case ( %hash ) { print "在哈希中" } else { print "沒有符合的條件" } }執行以上程序,輸出結果為:
數字10數字在列表中