Perl switch 語句

Perl 條件語句 Perl 條件語句

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

switch case 執行是基於 Switch 模組, Switch 模組默認是沒有安裝的。

安裝 Switch.pm 模組

使用 CPAN 安裝

打開命令窗口,輸入 cpan 命令,然後輸入 install Switch 命令:

# cpan
cpan[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+/ { 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 條件語句