课程表

Perl课程

工具箱
速查手册

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 语句。它根据不同的值执行对应的代码块。

三元运算符 ? :

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

  1. Exp1 ? Exp2 : Exp3;

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

实例如下所示:

  1. #!/usr/local/bin/perl
  2. $name = "W3xue教程";
  3. $favorite = 10; # 喜欢数
  4.  
  5. $status = ($favorite > 60 )? "热门网站" : "不是热门网站";
  6.  
  7. print "$name - $status\n";

在线运行实例

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

  1. W3xue教程 - 不是热门网站

if 语句

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

语法

语法格式如下所示:

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

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

流程图

Perl 中的 if 语句

实例

  1. #!/usr/bin/perl
  2. $a = 10;
  3. # 使用 if 语句判断布尔表达式
  4. if( $a < 20 ){
  5. # 布尔表达式为true时执行
  6. printf "a 小于 20\n";
  7. }
  8. print "a 的值为 : $a\n";
  9.  
  10. $a = "";
  11. # 使用 if 语句判断布尔表达式
  12. if( $a ){
  13. # i布尔表达式为true时执行
  14. printf "变量 a 为 true\n";
  15. }
  16. print "a 的值为 : $a\n";

在线运行实例

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

  1. a 小于 20
  2. a 的值为 : 10
  3. a 的值为 :

if...else 语句

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

语法

语法格式如下所示:

  1. if(boolean_expression){
  2. # 在布尔表达式 boolean_expression 为 true 执行
  3. }else{
  4. # 在布尔表达式 boolean_expression 为 false 执行
  5. }

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

流程图

C 中的 if...else 语句

实例

  1. #!/usr/bin/perl
  2. $a = 100;
  3. # 使用 if 语句判断布尔表达式
  4. if( $a < 20 ){
  5. # 布尔表达式为true时执行
  6. printf "a 小于 20\n";
  7. }else{
  8. # 布尔表达式为false时执行
  9. printf "a 大于 20\n";
  10. }
  11. print "a 的值为 : $a\n";
  12.  
  13. $a = "";
  14. # 使用 if 语句判断布尔表达式
  15. if( $a ){
  16. # 布尔表达式为true时执行
  17. printf "a 条件为 true\n";
  18. }else{
  19. # 布尔表达式为false时执行
  20. printf "a 条件为 false\n";
  21. }
  22. print "a 的值为 : $a\n";

在线运行实例

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

  1. a 大于 20
  2. a 的值为 : 100
  3. a 条件为 false
  4. a 的值为 :

if...elsif...else 语句

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

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

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

  • if 语句后可以跟上 0 个 或 1 个 else 语句,但是 elsif 后面必须有 else 语句。

  • if 语句后可以跟上 0 个 或 1 个 elsif 语句,但它们必须写在 else 语句前。

  • 如果其中的一个 elsif 执行成功,其他的 elsif 和 else 将不再被执行。

语法

语法格式如下所示:

  1. if(boolean_expression 1){
  2. # 在布尔表达式 boolean_expression 1 为 true 执行
  3. }
  4. elsif( boolean_expression 2){
  5. # 在布尔表达式 boolean_expression 2 为 true 执行
  6. }
  7. elsif( boolean_expression 3){
  8. # 在布尔表达式 boolean_expression 3 为 true 执行
  9. }
  10. else{
  11. # 布尔表达式的条件都为 false 时执行
  12. }

实例

  1. #!/usr/bin/perl
  2.  
  3. $a = 100;
  4. # 使用 == 判断两个数是否相等
  5. if( $a == 20 ){
  6. # 条件为 true 时执行
  7. printf "a 的值为 20\n";
  8. }elsif( $a == 30 ){
  9. # 条件为 true 时执行
  10. printf "a 的值为 30\n";
  11. }else{
  12. # 以上所有的条件为 false 时执行
  13. printf "a 的值为 $a\n";
  14. }

在线运行实例

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

  1. a 的值为 100

unless 语句

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

语法

语法格式如下所示:

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

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

流程图

实例

  1. #!/usr/bin/perl
  2.  
  3. $a = 20;
  4. # 使用 unless 语句检测布尔表达式
  5. unless( $a < 20 ){
  6. # 布尔表达式为 false 时执行
  7. printf "a 大于等于 20\n";
  8. }
  9. print "a 的值为 : $a\n";
  10.  
  11. $a = "";
  12. # 使用 unless 语句检测布尔表达式
  13. unless ( $a ){
  14. # 布尔表达式为 false 时执行
  15. printf "条件 a 为 false\n";
  16. }
  17. print "a 的值为 : $a\n";

在线运行实例

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

  1. a 大于等于 20
  2. a 的值为 : 20
  3. 条件 a false
  4. a 的值为 :

unless...else 语句。

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

语法

语法格式如下所示:

  1. unless(boolean_expression){
  2. # 在布尔表达式 boolean_expression 为 false 执行
  3. }else{
  4. # 在布尔表达式 boolean_expression 为 true 执行
  5. }

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

流程图

实例

  1. #!/usr/bin/perl
  2.  
  3. $a = 100;
  4. # 使用 unless 语句检测布尔表达式
  5. unless( $a == 20 ){
  6. # 布尔表达式为 false 时执行
  7. printf "给定的条件为 false\n";
  8. }else{
  9. # 布尔表达式为 true 时执行
  10. printf "给定的条件为 true\n";
  11. }
  12. print "a 的值为 : $a\n";
  13.  
  14. $a = "";
  15. # 使用 unless 语句检测布尔表达式
  16. unless( $a ){
  17. # 布尔表达式为 false 时执行
  18. printf "a 给定的条件为 false\n";
  19. }else{
  20. # 布尔表达式为 true 时执行
  21. printf "a 给定的条件为 true\n";
  22. }
  23. print "a 的值为 : $a\n";

在线运行实例

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

  1. 给定的条件为 false
  2. a 的值为 : 100
  3. a 给定的条件为 false
  4. a 的值为 :

unless...elsif..else statement

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

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

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

  • unless 语句后可以跟上 0 个 或 1 个 else 语句,但是 elsif 后面必须有 else 语句。

  • unless 语句后可以跟上 0 个 或 1 个 elsif 语句,但它们必须写在 else 语句前。

  • 如果其中的一个 elsif 执行成功,其他的 elsif 和 else 将不再被执行。

语法

语法格式如下所示:

  1. unless(boolean_expression 1){
  2. # 在布尔表达式 boolean_expression 1 为 false 执行
  3. }
  4. elsif( boolean_expression 2){
  5. # 在布尔表达式 boolean_expression 2 为 true 执行
  6. }
  7. elsif( boolean_expression 3){
  8. # 在布尔表达式 boolean_expression 3 为 true 执行
  9. }
  10. else{
  11. # 没有条件匹配时执行
  12. }

实例

  1. #!/usr/bin/perl
  2.  
  3. $a = 20;
  4. # 使用 unless 语句检测布尔表达式
  5. unless( $a == 30 ){
  6. # 布尔表达式为 false 时执行
  7. printf "a 的值不为 30\n";
  8. }elsif( $a == 30 ){
  9. # 布尔表达式为 true 时执行
  10. printf "a 的值为 30\n";
  11. }else{
  12. # 没有条件匹配时执行
  13. printf "a 的 值为 $a\n";
  14. }

在线运行实例

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

  1. a 的值不为 30

switch 语句

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

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

语法

语法格式如下所示:

  1. use Switch;
  2.  
  3. switch(argument){
  4. case 1 { print "数字 1" }
  5. case "a" { print "字符串 a" }
  6. case [1..10,42] { print "数字在列表中" }
  7. case (\@array) { print "数字在数组中" }
  8. case /\w+/ { print "正则匹配模式" }
  9. case qr/\w+/ { print "正则匹配模式" }
  10. case (\%hash) { print "哈希" }
  11. case (\&sub) { print "子进程" }
  12. else { print "不匹配之前的条件" }
  13. }

以下是 switch 语句的规则:

  • switch 语句的括号中可以使用任意类型的标量参数。
  • 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。

  • case 语句后的标量会与 switch 语句的标量进行比较,判断是否相等。

  • 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。

  • switch 语句可以有一个可选的 else ,该语句在最后面,该语句在所有 case 不匹配的情况下执行。

  • 当匹配 case 后,会执行 case 语句块代码,执行后跳出 switch 语句。

  • 当匹配 case 后,如果我们需要继续执行接下来的 case 语句,则需要添加 next 语句。

流程图

实例

  1. #!/usr/bin/perl
  2.  
  3. use Switch;
  4.  
  5. $var = 10;
  6. @array = (10, 20, 30);
  7. %hash = ('key1' => 10, 'key2' => 20);
  8.  
  9. switch($var){
  10. case 10 { print "数字 10\n" }
  11. case "a" { print "字符串 a" }
  12. case [1..10,42] { print "数字在列表中" }
  13. case (\@array) { print "数字在数组中" }
  14. case (\%hash) { print "在哈希中" }
  15. else { print "没有匹配的条件" }
  16. }

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

  1. 数字 10

接下来我们看下使用 next 的实例:

  1. #!/usr/bin/perl
  2.  
  3. use Switch;
  4.  
  5. $var = 10;
  6. @array = (10, 20, 30);
  7. %hash = ('key1' => 10, 'key2' => 20);
  8.  
  9. switch($var){
  10. case 10 { print "数字 10\n"; next; } # 匹配后继续执行
  11. case "a" { print "string a" }
  12. case [1..10,42] { print "数字在列表中" }
  13. case (\@array) { print "数字在数组中" }
  14. case (\%hash) { print "在哈希中" }
  15. else { print "没有匹配的条件" }
  16. }

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

  1. 数字 10
  2. 数字在列表中
转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号