Perl switch 语句

返回上一级

Perl 中,一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查

switch case 执行是基于 Switch 模块, Switch 模块使用 Filter::Util::CallText::Balanced 来执行,这两个模块都需要安装

switch 语句语法格式

switch 语句语法格式如下所示:

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 语句

switch 语句流程图

Perl 中的 switch 语句流程图如下

范例 : Perl 中 switch 语句的使用

#!/usr/bin/perl

=pod

  file: mail.pl
  author: 简单教程(www.twle.cn)

  Copyright © 2015-2065 www.twle.cn. All rights reserved.

=cut


use Switch;

$var = 28;
@array = (27, 28, 33);
%hash = ('key1' => 21, 'key2' => 23);

switch($var){
   case 10           { print "数字 10\n" }
   case "a"          { print "字符串 a" }
   case [1..10,42]   { print "数字在列表中" }
   case (\@array)    { print "数字在数组中" }
   case (\%hash)     { print "在哈希中" }
   else              { print "没有匹配的条件" }
}

运行以上范例,输出结果为:

$ perl main.pl
数字在数组中

如果运行结果是

$ perl main.pl
Can't locate Switch.pm in @INC (you may need to install the Switch module)

则需要安装 Switch 模块,使用以下方法

  1. 打开终端,可以使用 Ctrl-Alt-t 组合键
  2. 输入 cpan 进入 cpan 命令行
  3. cpan 交互命令行中输入 install Switch 安装 switch,注意大小写
  4. 输入 exit 退出 cpan


范例 : Perl 中 next 语句的使用

#!/usr/bin/perl

=pod

  file: mail.pl
  author: 简单教程(www.twle.cn)

  Copyright © 2015-2065 www.twle.cn. All rights reserved.

=cut


use Switch;

$var = 28;
@array = (27, 28, 33);
%hash = ('key1' => 21, 'key2' => 23);

switch($var){
   case 28           { print "数字 28\n";next; }
   case "a"          { print "字符串 a" }
   case [1..10,42]   { print "数字在列表中" }
   case (\@array)    { print "数字在数组中" }
   case (\%hash)     { print "在哈希中" }
   else              { print "没有匹配的条件" }
}

运行以上范例,输出结果为:

$ perl main.pl
数字 28
数字在数组中

返回上一级

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.