Perl switch 语句
一个 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 条件语句
尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题