Perl 条件语句

Perl 条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。

可以通过下图来简单了解条件语句的执行过程:

注意,数字 0, 字符串 '0' 、 "" , 空 list () , 和 undef 为 false ,其他值均为 true。 true 前面使用 ! 或 not则返回 false 。

Perl 提供了下拉的条件语句:

语句 描述

if 语句

一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。

if...else 语句

一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。

if...elsif...else 语句

您可以在一个 if 语句后可跟一个可选的 elsif 语句,然后再跟另一个 else 语句

unless 语句

一个 unless 语句 由一个布尔表达式后跟一个或多个语句组成。

unless...else 语句。

一个 unless 语句 后可跟一个可选的 else 语句

unless...elsif..else statement

一个 unless 语句 后可跟一个可选的 elsif 语句,然后再跟另一个 else 语句

switch 语句

在最新版本的 Perl 中,我们可以使用 switch 语句。它根据不同的值执行对应的代码块。

Perl IF 语句

Perl if 语句由一个布尔表达式后跟一个或多个语句组成。

语法

语法格式如下所示:

if(boolean_expression){
# 在布尔表达式 boolean_expression 为 true 执行
}

如果布尔表达式 boolean_expression为 true,则 if 语句内的代码块将被执行。如果布尔表达式为 false,则 if 语句结束后的第一组代码(闭括号后)将被执行。

流程图

实例

#!/usr/bin/perl

$a = 10;
# 使用 if 语句判断布尔表达式
if( $a < 20 ){
# 布尔表达式为true时执行
printf "a 小于 20\n";
}
print "a 的值为 : $a\n"; $a = "";
# 使用 if 语句判断布尔表达式
if( $a ){
# i布尔表达式为true时执行
printf "变量 a 为 true\n";
}
print "a 的值为 : $a\n";

执行以上程序,输出结果为:

a 小于 20
a 的值为 : 10
a 的值为 :

Perl IF...ELSE 语句

一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为 false 时执行。

语法

语法格式如下所示:

if(boolean_expression){
# 在布尔表达式 boolean_expression 为 true 执行
}else{
# 在布尔表达式 boolean_expression 为 false 执行
}

如果布尔表达式 boolean_expression 为 true,则执行 if 块内的代码。如果布尔表达式为 false,则执行 else 块内的代码。

流程图

实例

#!/usr/bin/perl

$a = 100;
# 使用 if 语句判断布尔表达式
if( $a < 20 ){
# 布尔表达式为true时执行
printf "a 小于 20\n";
}else{
# 布尔表达式为false时执行
printf "a 大于 20\n";
}
print "a 的值为 : $a\n"; $a = "";
# 使用 if 语句判断布尔表达式
if( $a ){
# 布尔表达式为true时执行
printf "a 条件为 true\n";
}else{
# 布尔表达式为false时执行
printf "a 条件为 false\n";
}
print "a 的值为 : $a\n";

执行以上程序,输出结果为:

a 大于 20
a 的值为 : 100
a 条件为 false
a 的值为 :

Perl IF...ELSIF 语句

一个 if 语句后可跟一个可选的 elsif 语句,然后再跟另一个 else 语句。

这种条件判断语句在多个条件的情况下非常有用。

在使用 if , elsif , else 语句时你需要注意以下几点。

  • if 语句后可以跟上 0 个 或 1 个 else 语句,但是 elsif 后面必须有 else 语句。
  • if 语句后可以跟上 0 个 或 1 个 elsif 语句,但它们必须写在 else 语句前。
  • 如果其中的一个 elsif 执行成功,其他的 elsif 和 else 将不再被执行。

语法

语法格式如下所示:

if(boolean_expression 1){
# 在布尔表达式 boolean_expression 1 为 true 执行
}
elsif( boolean_expression 2){
# 在布尔表达式 boolean_expression 2 为 true 执行
}
elsif( boolean_expression 3){
# 在布尔表达式 boolean_expression 3 为 true 执行
}
else{
# 布尔表达式的条件都为 false 时执行
}

实例

#!/usr/bin/perl

$a = 100;
# 使用 == 判断两个数是否相等
if( $a == 20 ){
# 条件为 true 时执行
printf "a 的值为 20\n";
}elsif( $a == 30 ){
# 条件为 true 时执行
printf "a 的值为 30\n";
}else{
# 以上所有的条件为 false 时执行
printf "a 的值为 $a\n";
}

执行以上程序,输出结果为:

a 的值为 100

Perl UNLESS 语句

一个 unless 语句由一个布尔表达式后跟一个或多个语句组成。

语法

语法格式如下所示:

unless(boolean_expression){
# 在布尔表达式 boolean_expression 为 false 执行
}

如果布尔表达式 boolean_expression为 false,则 if 语句内的代码块将被执行。如果布尔表达式为 true,则 if 语句结束后的第一组代码(闭括号后)将被执行。

流程图

实例

#!/usr/bin/perl

$a = 20;
# 使用 unless 语句检测布尔表达式
unless( $a < 20 ){
# 布尔表达式为 false 时执行
printf "a 大于等于 20\n";
}
print "a 的值为 : $a\n"; $a = "";
# 使用 unless 语句检测布尔表达式
unless ( $a ){
# 布尔表达式为 false 时执行
printf "条件 a 为 false\n";
}
print "a 的值为 : $a\n";

执行以上程序,输出结果为:

a 大于等于 20
a 的值为 : 20
条件 a 为 false
a 的值为 :

Perl UNLESS...ELSE 语句

一个 unless 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为 true 时执行。

语法

语法格式如下所示:

unless(boolean_expression){
# 在布尔表达式 boolean_expression 为 false 执行
}else{
# 在布尔表达式 boolean_expression 为 true 执行
}

如果布尔表达式 boolean_expression 为 false,则执行 unless 块内的代码。如果布尔表达式为 true,则执行 else 块内的代码。

流程图

实例

#!/usr/bin/perl

$a = 100;
# 使用 unless 语句检测布尔表达式
unless( $a == 20 ){
# 布尔表达式为 false 时执行
printf "给定的条件为 false\n";
}else{
# 布尔表达式为 true 时执行
printf "给定的条件为 true\n";
}
print "a 的值为 : $a\n"; $a = "";
# 使用 unless 语句检测布尔表达式
unless( $a ){
# 布尔表达式为 false 时执行
printf "a 给定的条件为 false\n";
}else{
# 布尔表达式为 true 时执行
printf "a 给定的条件为 true\n";
}
print "a 的值为 : $a\n";

执行以上程序,输出结果为:

给定的条件为 false
a 的值为 : 100
a 给定的条件为 false
a 的值为 :

Perl UNLESS...ELSIF 语句

一个 unless 语句后可跟一个可选的 elsif 语句,然后再跟另一个 else 语句。

这种条件判断语句在多个条件的情况下非常有用。

在使用 unless , elsif , else 语句时你需要注意以下几点。

  • unless 语句后可以跟上 0 个 或 1 个 else 语句,但是 elsif 后面必须有 else 语句。
  • unless 语句后可以跟上 0 个 或 1 个 elsif 语句,但它们必须写在 else 语句前。
  • 如果其中的一个 elsif 执行成功,其他的 elsif 和 else 将不再被执行。

语法

语法格式如下所示:

unless(boolean_expression 1){
# 在布尔表达式 boolean_expression 1 为 false 执行
}
elsif( boolean_expression 2){
# 在布尔表达式 boolean_expression 2 为 true 执行
}
elsif( boolean_expression 3){
# 在布尔表达式 boolean_expression 3 为 true 执行
}
else{
# 没有条件匹配时执行
}

实例

#!/usr/bin/perl

$a = 20;
# 使用 unless 语句检测布尔表达式
unless( $a == 30 ){
# 布尔表达式为 false 时执行
printf "a 的值不为 30\n";
}elsif( $a == 30 ){
# 布尔表达式为 true 时执行
printf "a 的值为 30\n";
}else{
# 没有条件匹配时执行
printf "a 的 值为 $a\n";
}

执行以上程序,输出结果为:

a 的值不为 30

Perl switch 语句

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

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

语法

语法格式如下所示:

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

三元运算符 ? :

我们可以使用 条件运算 ? : 来简化 if...else 语句的操作。通常格式为:

Exp1 ? Exp2 : Exp3;

如果 Exp1 表达式为 true ,则返回 Exp2 表达式计算结果,否则返回 Exp3。

实例如下所示:

#!/usr/local/bin/perl

$name = "编程字典";
$favorite = 10; # 喜欢数 $status = ($favorite > 60 )? "热门网站" : "不是热门网站"; print "$name - $status\n";

执行以上程序,输出结果为:

编程字典-不是热门网站!

本文转自:http://codingdict.com/article/6803

Perl 条件语句的更多相关文章

  1. 9-Perl 条件语句

    1.Perl 条件语句Perl 条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块.注意,数字 0, 字符串 '0' . "" , 空 list ( ...

  2. Python —条件语句

    条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非空(null ...

  3. php简写表达式,&& or || 缩写条件语句

    有时候学的多了, 好多小细节 都忘了 ,比如 简单的表达式, 三元表达式   ?:; $aa or $bb 表达式 等等! 写一些简单的表达式,备忘! php用&&和||缩写条件语句 ...

  4. java中的条件语句(if、if...else、多重if、嵌套if)

    Java条件语句之 if 生活中,我们经常需要先做判断,然后才决定是否要做某件事情.例如,如果考试成绩大于 90 分,则奖励一个 IPHONE 5S .对于这种"需要先判断条件,条件满足后才 ...

  5. javascript语句——条件语句、循环语句和跳转语句

    × 目录 [1]条件语句 [2]循环语句 [3]跳转语句 前面的话 默认情况下,javascript解释器依照语句的编写顺序依次执行.而javascript中的很多语句可以改变语句的默认执行顺序.本文 ...

  6. go语言条件语句 if else

    示例: if a < 5 { return 0 } else { return 1 } 关于条件语句,需要注意以下几点:  条件语句不需要使用括号将条件包含起来():  无论语句体内有几条语 ...

  7. Todd's Matlab讲义第4讲:控制误差和条件语句

    误差和残量 数值求解方程\(f(x)=0\)的根,有多种方法测算结果的近似程度.最直接的方法是计算误差.第\(n\)步迭代结果与真值\(x^\*\)的差即为第\(n\)步迭代的误差: \begin{e ...

  8. 5-python学习——条件语句

    5-python学习——条件语句 5-python学习——条件语句 条件语句if else形式 if else条件语句说明 测试一下 编程语言一般都由这么几个部分组成 变量 条件分支语句 循环语句 函 ...

  9. Python基础6- 流程控制之if条件语句

    Python条件语句是通过判断一条或多条条件语句的执行结果来决定执行哪条代码块的.Python 中if 语句用于控制程序的执行,基本形式为:if 判断条件: 执行语句……else: 执行语句…… #c ...

随机推荐

  1. python3 获取当前路径及os.path.dirname的使用

    方法一: import sys,os os.getcwd()#然后就可以看见结果了 方法二: import os os.path.dirname(os.path.realpath('__file__' ...

  2. fzu 1901 next+脑洞

    题目大意: 给你一个字符串str,对于每个str长度为p的前缀,如果str[i]==str[p+i](p+i<len),那么我们认为它是一个periodic prefixs.求所有满足题意的前缀 ...

  3. python入门学习一

    本文用来记录学习python过程中所遇到的不同的或者记忆不清的一些定义. 注释 注释用# #此处是注释 n = 123 f = 456 不转义 Python中r‘  ’表示字符串默认不转义 print ...

  4. react-native run-android出现红屏错误

    react-native run-android出现 unable to load script from assets 'index.android.bundle'.Make sure your b ...

  5. 友善之臂arm9、 smart210监控版本,烧写系统

    第一次接触嵌入式开发,就拿210练手了,第一天折腾,先烧系统. 准备:板子,8GB或者以上的SD卡,网上找下minitools以及系统小红帽,Android或者ubuntu,debian都可以.[ub ...

  6. Vue 指令大全

    准备开始本章要给大家带来的内容是相关Vue中的组件以及一系列常用属性.本章合适人群囊括了除已有开发经验人员以外的小白新手,从how.why.what三个角度来让大家理解并使用该技术历史介绍angula ...

  7. DELPHI中枚举类型数据的介绍和使用方法

    在看delphi程序的时候看到aa=(a,b,c,d);这样的东西,还以为是数组,同事说是函数,呵呵,当然这两个都不屑一击,原来这样式子是在声明并付值一个枚举类型的数据.下边写下来DELPHI中枚举类 ...

  8. LInux文件基础知识和文件目录操作(系统调用函数方式)

    1.进程是处于活动状态的程序,某个用户通过操作系统运行程序所产生的进程代表着该用户的行为.如果用户不具备访问某个目录和文件的权限,那么该用户的进程也不能访问. 2.Linux系统中文件安全机制是通过给 ...

  9. 剑指offer---1、顺时针打印矩阵

    剑指offer---1.顺时针打印矩阵 一.总结 一句话总结: 谋而后动+多做:还是要谋而后动,但是怎么谋而后动,很有学问,做好的方式就是多做 问题就这些问题:解决了就好了,比如php多维数组 面试的 ...

  10. legend2---开发日志16

    legend2---开发日志16 一.总结 一句话总结: 编程敲代码,一定要把 关系弄清楚,关系不弄清楚,很容易敲错,比如:如何求无限级分类的博客的数据的数目 弄清楚关系式:自己总数量=孩子总数量+自 ...