Perl自学(07) |
您所在的位置:网站首页 › 退出while循环的语句 › Perl自学(07) |
(本文参考博客) 1. 循环语句注意,数字 0, 字符串 '0' 、 "" , 空 list () , 和 undef 为 false ,其他值均为 true。 true 前面使用 ! 或 not则返回 false 。 1.1 while 循环while 语句在给定条件为 true 时,重复执行语句或语句组。循环主体执行之前会先测试条件。 while(condition) { #condition为真执行该语句块 statement(s); } 1.2 until 语句until 语句在给定条件为 false 时,重复执行语句或语句组。 until(condition) { #condition为false时候。执行该语句模块 statement(s); } 1.3 for 循环Perl for 循环用于多次执行一个语句序列,简化管理循环变量的代码。 for ( init; condition; increment ){ #init:初始化变量 #condition:循环条件 #increment:循环变量更新 #条件是true执行循环体 statement(s); }下面是 for 循环的控制流程解析: init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。接下来,会判断 condition。如果为 true,则执行循环主体。如果为 false,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。条件再次被判断。如果为 true,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为 false 时,for 循环终止。在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。 condition 可以是任意的表达式,当条件为 true 时执行循环,当条件为 false 时,退出循环。 1.4 foreach 循环Perl foreach 循环用于迭代一个列表或集合变量的值。 foreach var (list) { ... } #!/usr/bin/perl @list = (2, 12, 36, 42, 51); # 执行foreach 循环 foreach $a (@list){ print "a 的值为: $a\n"; } a 的值为: 2 a 的值为: 12 a 的值为: 36 a 的值为: 42 a 的值为: 51 1.5 do...while 循环不像 for 和 while 循环,它们是在循环头部测试循环条件。在 Perl 语言中,do...while 循环是在循环的尾部检查它的条件。 do...while 循环与 while 循环类似,但是 do...while 循环会确保至少执行一次循环。 do { statement(s); }while( condition );请注意,条件表达式出现在循环的尾部,所以循环中的 statement(s) 会在条件被测试之前至少执行一次。 如果条件为 true,控制流会跳转回上面的 do,然后重新执行循环中的 statement(s)。这个过程会不断重复,直到给定条件变为 false 为止。 1.6 循环的嵌套具体问题具体分析。应该是都会,注意循环的次序。 1.7 无限循环如果条件永远不为 false,则循环将变成无限循环。 for 循环在传统意义上可用于实现无限循环。 由于构成循环的三个表达式中任何一个都不是必需的,您可以将某些条件表达式留空来构成一个无限循环。 #!/usr/bin/perl for( ; ; ) { printf "循环会无限执行。\n"; }注意:你可以按下 Ctrl + C 键来终止循环。 一般情况下,Perl 程序员偏向于使用 for( ; ; ) 结构来表示一个无限循环。 1.8 循环控制语句next 语句 停止执行从next语句的下一语句开始到循环体结束标识符之间的语句,转去执行continue语句块,然后再返回到循环体的起始处开始执行下一次循环。last 语句 退出循环语句块,从而结束循环continue 语句 continue 语句块通常在条件语句再次判断前执行。redo 语句 redo 语句直接转到循环体的第一行开始重复执行本次循环,redo语句之后的语句不再执行,continue语句块也不再执行;goto 语句 Perl 有三种 goto 形式:got LABLE,goto EXPR,和 goto &NAME。 1.8.1 next 语句 next [ LABEL ];其中 LABEL 是可选的,如果没有指定 LABEL,next 语句将返回到循环体的起始处开始执行下一次循环。 #!/usr/bin/perl $a = 10; while( $a < 20 ){ if( $a == 15) { # 跳出迭代 $a = $a + 1; next; } print "a 的值为: $a\n"; $a = $a + 1; } 执行以上程序,输出结果为: a 的值为: 10 a 的值为: 11 a 的值为: 12 a 的值为: 13 a 的值为: 14 a 的值为: 16 a 的值为: 17 a 的值为: 18 a 的值为: 19 1.8.2 last 语句 last [LABEL];Perl last 语句用于退出循环语句块,从而结束循环,last语句之后的语句不再执行,continue语句块也不再执行。 #!/usr/bin/perl $a = 10; while( $a < 20 ){ if( $a == 15) { # 退出循环 $a = $a + 1; last; } print "a 的值为: $a\n"; $a = $a + 1; } 执行以上程序,输出结果为: a 的值为: 10 a 的值为: 11 a 的值为: 12 a 的值为: 13 a 的值为: 14 1.8.3 continue 语句Perl continue 块通常在条件语句再次判断前执行。 continue 语句可用在 while 和 foreach 循环中。 while(condition){ statement(s); }continue{ statement(s); } #/usr/bin/perl $a = 0; while($a < 3){ print "a = $a\n"; }continue{ $a = $a + 1; } 执行以上程序,输出结果为: a = 0 a = 1 a = 2 1.8.4 redo 语句Perl redo 语句直接转到循环体的第一行开始重复执行本次循环,redo语句之后的语句不再执行,continue语句块也不再执行。 continue 语句可用在 while 和 foreach 循环中。 redo [LABEL] 其中 LABEL 是可选的。带标号修饰符LABEL的redo语句表示把循环控制流程直接转到与标号修饰符LABEL相关联的语句块的第一行处开始执行,而不再执行redo语句之后的语句和continue语句块;不带标号修饰符LABEL的redo语句表示把循环控制流程直接转到当前语句块的第一行处开始执行,而不再执行redo语句之后的语句和continue语句块;如果是在for循环中或者是带有continue语句块,则for循环中的递增列表和continue语句块都不再被执行; #/usr/bin/perl $a = 0; while($a < 10){ if( $a == 5 ){ $a = $a + 1; redo; } print "a = $a\n"; }continue{ $a = $a + 1; } 执行以上程序,输出结果为: a = 0 a = 1 a = 2 a = 3 a = 4 a = 6 a = 7 a = 8 a = 9 1.8.5 goto 语句Perl 有三种 goto 形式:got LABLE,goto EXPR,和 goto &NAME: 1goto LABEL找出标记为 LABEL 的语句并且从那里重新执行。 2goto EXPRgoto EXPR 形式只是 goto LABEL 的一般形式。它期待表达式生成一个标记名称,并跳到该标记处执行。 3goto &NAME它把正 在运行着的子进程替换为一个已命名子进程的调用。 1.8.5.1 goto LABLE示例: #/usr/bin/perl $a = 10; LOOP:do { if( $a == 15){ # 跳过迭代 $a = $a + 1; # 使用 goto LABEL 形式 print "跳出输出 \n"; goto LOOP; print "这一句不会被执行 \n"; } print "a = $a\n"; $a = $a + 1; }while( $a < 20 ); 执行以上程序,输出结果为: a = 10 a = 11 a = 12 a = 13 a = 14 跳出输出 a = 16 a = 17 a = 18 a = 19 1.8.5.2 goto EXPR示例 $a = 10; $str1 = "LO"; $str2 = "OP"; LOOP:do { if( $a == 15){ # 跳过迭代 $a = $a + 1; # 使用 goto EXPR 形式 goto $str1.$str2; # 类似 goto LOOP } print "a = $a\n"; $a = $a + 1; }while( $a < 20 ); 执行以上程序,输出结果为: a = 10 a = 11 a = 12 a = 13 a = 14 a = 16 a = 17 a = 18 a = 19
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |