Perl
+ -

Perl switch 语句

2019-09-09 5 0

一个 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 语句。

流程图

switch 语句

实例

#!/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
数字在列表中

0 篇笔记 写笔记

C# while 循环
只要给定的条件为真,C# 中的 while 循环语句会重复执行一个目标语句。语法C# 中 while 循环的语法:while(condition){ statement(s);}在这里, statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。 condition可以是任意......
Perl 引用
引用就是指针,Perl 引用是一个标量类型可以指向变量、数组、哈希表(也叫关联数组)甚至子程序,可以应用在程序的任何地方。创建引用定义变量的时候,在变量名前面加个,就得到了这个变量的一个引用,比如:$scalarref = $foo; # 标量变量引用$arrayref = @ARG......
C# switch 语句
一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case进行检查。语法C# 中 switch 语句的语法:switch(expression){ case constant-expression : st......
C# for/foreach 循环
一个 for 循环是一个允许您编写一个执行特定次数的循环的重复控制结构。语法C# 中 for 循环的语法:for ( init; condition; increment ){ statement(s);}下面是 for 循环的控制流:init 会首先被执行,且只会执行一次。这一步允许您声明并初......
GO语言 循环语句
在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。以下为大多编程语言循环程序的流程图:Go 语言提供了以下几种类型循环处理语句:循环类型描述 for 循环重复执行语句块 循环嵌套在 for 循环中嵌套一个或多个 for 循环 循环控制语句循环控制语句可以控制循环体......
Java intern() 方法
intern() 方法返回字符串对象的规范化表示形式。它遵循以下规则:对于任意两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。语法public String intern()参数无返回值一个字符串,内容与此......
GCC 链接生成可执行文件-o
汇编之后的目标文件,是一个纯二进制文件,还不能执行,如要执行还需要进行链接。链接主要就是为了解决多个文件之间符号引用的问题。编译时编译器只对单个文件进行了处理,如果该文件中引用了其它文件中的符号(如全局变量或函数),那么此时谁的中该符号的地址是无法确定的,只能等链接器把所有目标文件链接到一起才能确定......
Perl while 循环
while 语句在给定条件为 true 时,重复执行语句或语句组。循环主体执行之前会先测试条件。语法语法格式如下所示:while(condition){ statement(s);}在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。condition 可以是任......
Java compareToIgnoreCase() 方法
compareToIgnoreCase() 方法用于按字典顺序比较两个字符串,不考虑大小写。语法int compareToIgnoreCase(String str)参数str -- 要比较的字符串。返回值如果参数字符串等于此字符串,则返回值 0;如果此字符串小于字符串参数,则返回一个小于 0 的值......
Java toUpperCase() 方法
toUpperCase() 方法将字符串小写字符转换为大写。语法public String toUpperCase()或public String toUpperCase(Locale locale)参数无返回值字符转换为大写后的字符串。实例public class Test { public......
Lua 运算符运算符
运算符是一个特殊的符号,用于告诉解释器执行特定的数学或逻辑运算。Lua提供了以下几种运算符类型:算术运算符关系运算符逻辑运算符其他运算符算术运算符下表列出了 Lua 语言中的常用算术运算符,设定 A 的值为10,B 的值为 20:操作符描述实例 +加法A + B 输出结果 30 -减法A - B......
Java isWhitespace() 方法
isWhitespace() 方法用于判断指定字符是否为空白字符,空白符包含:空格、tab键、换行符。语法boolean isWhitespace(char ch)参数ch -- 要测试的字符。返回值如果字符为空白字符,则返回 true;否则返回 false。实例public class Test ......
C# if…else 语句
一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。语法C# 中 if…else 语句的语法:if(boolean_expression){ /* 如果布尔表达式为真将执行的语句 */}else{ /* 如果布尔表达式为假将执行的语句 */}如果布尔表达式......
PHP 运行exec() 或者 shell_exec()
一、查看启动你php的进程的用户是谁。可以通过在命令行执行:·ps -ef | grep php·来看。或者在php中执行 echo exec(‘whoami’) 来查看。centos下默认会是nobody。 nobody默认没有任何权限。此时先自己添加一个用户和组。/usr/sbin/groupa......
Java 循环结构
顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构。Java中有三种主要的循环结构:while 循环do …while 循环for 循环在Java5中引入了一种主要用于数组的增强型for循环。while 循环while是最基本的循环,它的结构为:while( 布尔表......
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!