Perl switch 語句
一個 switch 語句允許測試一個變量等于多個值時的情況。每個值稱為一個 case,且被測試的變量會對每個 switch case 進行檢查。
switch case 執(zhí)行是基于 Switch 模塊, Switch 模塊使用Filter::Util::Call 和 Text::Balanced 來執(zhí)行,這兩個模塊都需要安裝。
語法
語法格式如下所示:
use Switch; switch(argument){ case 1 { print "數(shù)字 1" } case "a" { print "字符串 a" } case [1..10,42] { print "數(shù)字在列表中" } case (\@array) { print "數(shù)字在數(shù)組中" } case /\w+/ { print "正則匹配模式" } case qr/\w+/ { print "正則匹配模式" } case (\%hash) { print "哈希" } case (\&sub) { print "子進程" } else { print "不匹配之前的條件" } }
以下是 switch 語句的規(guī)則:
- switch 語句的括號中可以使用任意類型的標量參數(shù)。
在一個 switch 中可以有任意數(shù)量的 case 語句。每個 case 后跟一個要比較的值和一個冒號。
case 語句后的標量會與 switch 語句的標量進行比較,判斷是否相等。
當被測試的變量等于 case 中的常量時,case 后跟的語句將被執(zhí)行,直到遇到 break 語句為止。
switch 語句可以有一個可選的 else ,該語句在最后面,該語句在所有 case 不匹配的情況下執(zhí)行。
當匹配 case 后,會執(zhí)行 case 語句塊代碼,執(zhí)行后跳出 switch 語句。
當匹配 case 后,如果我們需要繼續(xù)執(zhí)行接下來的 case 語句,則需要添加 next 語句。
流程圖
實例
#!/usr/bin/perl use Switch; $var = 10; @array = (10, 20, 30); %hash = ('key1' => 10, 'key2' => 20); switch($var){ case 10 { print "數(shù)字 10\n" } case "a" { print "字符串 a" } case [1..10,42] { print "數(shù)字在列表中" } case (\@array) { print "數(shù)字在數(shù)組中" } case (\%hash) { print "在哈希中" } else { print "沒有匹配的條件" } }
執(zhí)行以上程序,輸出結(jié)果為:
數(shù)字 10
接下來我們看下使用 next 的實例:
#!/usr/bin/perl use Switch; $var = 10; @array = (10, 20, 30); %hash = ('key1' => 10, 'key2' => 20); switch($var){ case 10 { print "數(shù)字 10\n"; next; } # 匹配后繼續(xù)執(zhí)行 case "a" { print "string a" } case [1..10,42] { print "數(shù)字在列表中" } case (\@array) { print "數(shù)字在數(shù)組中" } case (\%hash) { print "在哈希中" } else { print "沒有匹配的條件" } }
執(zhí)行以上程序,輸出結(jié)果為:
數(shù)字 10 數(shù)字在列表中
更多建議: