Perl redo 语句

Perl redo 语句直接转到循环体的第一行开始重复执行本次循环,redo语句之后的语句不再执行,continue语句块也不再执行。

continue 语句可用在 while 和 foreach 循环中。

语法

语法格式如下所示:

  1. redo [LABEL]

其中 LABEL 是可选的。

带标号修饰符LABEL的redo语句表示把循环控制流程直接转到与标号修饰符LABEL相关联的语句块的第一行处开始执行,而不再执行redo语句之后的语句和continue语句块;

不带标号修饰符LABEL的redo语句表示把循环控制流程直接转到当前语句块的第一行处开始执行,而不再执行redo语句之后的语句和continue语句块;

如果是在for循环中或者是带有continue语句块,则for循环中的递增列表和continue语句块都不再被执行;

流程图

Perl redo 语句 - 图1

实例

  1. #/usr/bin/perl
  2. $a = 0;
  3. while($a < 10){
  4. if( $a == 5 ){
  5. $a = $a + 1;
  6. redo;
  7. }
  8. print "a = $a\n";
  9. }continue{
  10. $a = $a + 1;
  11. }

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

  1. a = 0
  2. a = 1
  3. a = 2
  4. a = 3
  5. a = 4
  6. a = 6
  7. a = 7
  8. a = 8
  9. a = 9