Perl switch 语句
Perl 中,一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查
switch case 执行是基于 Switch 模块, Switch 模块使用 Filter::Util::Call 和 Text::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
模块,使用以下方法
- 打开终端,可以使用
Ctrl-Alt-t
组合键 - 输入
cpan
进入 cpan 命令行 - 在
cpan
交互命令行中输入install Switch
安装switch
,注意大小写 - 输入
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
数字在数组中