Perl switch 語(yǔ)句
一個(gè) switch 語(yǔ)句允許測(cè)試一個(gè)變量等于多個(gè)值時(shí)的情況。每個(gè)值稱為一個(gè) case,且被測(cè)試的變量會(huì)對(duì)每個(gè) switch case 進(jìn)行檢查。
switch case 執(zhí)行是基于 Switch 模塊, Switch 模塊使用Filter::Util::Call 和 Text::Balanced 來(lái)執(zhí)行,這兩個(gè)模塊都需要安裝。
語(yǔ)法
語(yǔ)法格式如下所示:
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 "子進(jìn)程" } else { print "不匹配之前的條件" } }
以下是 switch 語(yǔ)句的規(guī)則:
- switch 語(yǔ)句的括號(hào)中可以使用任意類型的標(biāo)量參數(shù)。
在一個(gè) switch 中可以有任意數(shù)量的 case 語(yǔ)句。每個(gè) case 后跟一個(gè)要比較的值和一個(gè)冒號(hào)。
case 語(yǔ)句后的標(biāo)量會(huì)與 switch 語(yǔ)句的標(biāo)量進(jìn)行比較,判斷是否相等。
當(dāng)被測(cè)試的變量等于 case 中的常量時(shí),case 后跟的語(yǔ)句將被執(zhí)行,直到遇到 break 語(yǔ)句為止。
switch 語(yǔ)句可以有一個(gè)可選的 else ,該語(yǔ)句在最后面,該語(yǔ)句在所有 case 不匹配的情況下執(zhí)行。
當(dāng)匹配 case 后,會(huì)執(zhí)行 case 語(yǔ)句塊代碼,執(zhí)行后跳出 switch 語(yǔ)句。
當(dāng)匹配 case 后,如果我們需要繼續(xù)執(zhí)行接下來(lái)的 case 語(yǔ)句,則需要添加 next 語(yǔ)句。
流程圖
實(shí)例
#!/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 "沒(méi)有匹配的條件" } }
執(zhí)行以上程序,輸出結(jié)果為:
數(shù)字 10
接下來(lái)我們看下使用 next 的實(shí)例:
#!/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 "沒(méi)有匹配的條件" } }
執(zhí)行以上程序,輸出結(jié)果為:
數(shù)字 10 數(shù)字在列表中
更多建議: