Perl switch 語句

Perl 條件語句 Perl 條件語句

一個 switch 語句允許測試一個變量等于多個值時的情況。每個值稱為一個 case,且被測試的變量會對每個 switch case 進行檢查。

switch case 執(zhí)行是基于 Switch 模塊, Switch 模塊使用Filter::Util::CallText::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ù)字在列表中

Perl 條件語句 Perl 條件語句