Perl 条件语句
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 条件语句的更多相关文章
- 9-Perl 条件语句
1.Perl 条件语句Perl 条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块.注意,数字 0, 字符串 '0' . "" , 空 list ( ...
- Python —条件语句
条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非空(null ...
- php简写表达式,&& or || 缩写条件语句
有时候学的多了, 好多小细节 都忘了 ,比如 简单的表达式, 三元表达式 ?:; $aa or $bb 表达式 等等! 写一些简单的表达式,备忘! php用&&和||缩写条件语句 ...
- java中的条件语句(if、if...else、多重if、嵌套if)
Java条件语句之 if 生活中,我们经常需要先做判断,然后才决定是否要做某件事情.例如,如果考试成绩大于 90 分,则奖励一个 IPHONE 5S .对于这种"需要先判断条件,条件满足后才 ...
- javascript语句——条件语句、循环语句和跳转语句
× 目录 [1]条件语句 [2]循环语句 [3]跳转语句 前面的话 默认情况下,javascript解释器依照语句的编写顺序依次执行.而javascript中的很多语句可以改变语句的默认执行顺序.本文 ...
- go语言条件语句 if else
示例: if a < 5 { return 0 } else { return 1 } 关于条件语句,需要注意以下几点: 条件语句不需要使用括号将条件包含起来(): 无论语句体内有几条语 ...
- Todd's Matlab讲义第4讲:控制误差和条件语句
误差和残量 数值求解方程\(f(x)=0\)的根,有多种方法测算结果的近似程度.最直接的方法是计算误差.第\(n\)步迭代结果与真值\(x^\*\)的差即为第\(n\)步迭代的误差: \begin{e ...
- 5-python学习——条件语句
5-python学习——条件语句 5-python学习——条件语句 条件语句if else形式 if else条件语句说明 测试一下 编程语言一般都由这么几个部分组成 变量 条件分支语句 循环语句 函 ...
- Python基础6- 流程控制之if条件语句
Python条件语句是通过判断一条或多条条件语句的执行结果来决定执行哪条代码块的.Python 中if 语句用于控制程序的执行,基本形式为:if 判断条件: 执行语句……else: 执行语句…… #c ...
随机推荐
- 【LeetCode】Math
[263] Ugly Number [Easy] 一个数的质因子只有2,3,5就叫丑数,写个函数判断丑数. //Author: Wanying //注意 0 和 1 的corner case, 你居然 ...
- PHP-删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 1 ...
- 36.两个链表的第一个公共结点(python)
题目描述 输入两个链表,找出它们的第一个公共结点. class Solution: def FindFirstCommonNode(self, pHead1, pHead2): # write cod ...
- spark编写UDF和UDAF
UDF: 一.编写udf类,在其中定义udf函数 package spark._sql.UDF import org.apache.spark.sql.functions._ /** * AUTHOR ...
- Ubuntu图形界面和终端界面切换快捷键
Ctrl+Alt+F1可以从图形界面切换到终端界面. Ctrl+Alt+F7可以从终端界面退出来,重新回到图形界面
- leetcode-13双周赛-1257-最小公共区域
题目描述: 方法: class Solution(object): def findSmallestRegion(self, regions, region1, region2): parent = ...
- Vue学习笔记【8】——在Vue中使用样式
使用class样式 数组 <h1 :class="['red', 'thin']">这是一个邪恶的H1</h1> 2.数组中使用三元表达式 <h1 : ...
- 大牛公司的github
Google Google https://github.com/google Google Samples https://github.com/googlesamples Google Codel ...
- Android中如何搭建一个WebServer
今天终于把老大交代的任务搞完了,感觉收获挺多的,所以就写一篇来记录一下吧,首先还是来看一下,老大们的需求 需求: 希望移动端的用户标识(IMEI)和HTML页面的用户标识(Cookie)连接起来,其中 ...
- Elasticsearch之index_closed_exception
索引的打开与关闭 关闭索引 POST /index_name/_close 尝试插入数据 PUT /shakespeare/_doc/ { "title":"kibana ...