Latest web development tutorials

Perl switch 語句

Perl 條件語句 Perl條件語句

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

switch case執行是基於Switch模塊,Switch模塊使用Filter::Util::CallText::Balanced來執行,這兩個模塊都需要安裝。

語法

語法格式如下所示:

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+/      { print "正则匹配模式" }
   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
数字在列表中

Perl 條件語句 Perl條件語句