perl 循环中的last next redo 实例

回复 收藏
1. last 就是结束循环,跳到循环外头来。
  1. #! /usr/bin/perl
  2. while (1) {
  3.         print "Please input a number:";
  4.         chomp (my $n = );
  5.         if ( $n == 4 ) {
  6.                 print "Rright!\n";
  7.                 last;
  8.         } else {
  9.                 print "error!\n";
  10.         }
  11. }
上例中,如果用户不输入4,则会一直让用户输入,直到输入4,循环结束。

2. next  结束本次循环,不管下面还有没有语句,都会直接进行下次循环。
  1. #! /usr/bin/perl
  2. for $n (1..10) {
  3.         if ( $n == 5 ) {
  4.                 print "end this loop!\n";
  5.                 next;
  6.                 print "not print this line\n";
  7.         }
  8.         print "$n\n";
  9. }
运行结果是
1
2
3
4
end this loop!
6
7
8
9
10

上例中,当$n 等于5时,就会直接结束该次循环,不再执行next下面的语句。

3. redo  出现redo时,会跳到本次循环开始位置,重新执行本次循环,请注意,如果这里的逻辑判断不当会造成死循环!
  1. #! /usr/bin/perl
  2. for (my $i = 1; $i <10; $i++) {
  3.     print "Type the number $i:";
  4.         chomp (my $n = );
  5.         if ($n ne $i) {
  6.                 print "sorry, not right, retype!\n";
  7.                 redo;
  8.         }
  9. }
redo和 next最大的区别就是,前者会重新执行本次迭代,后者会结束本次循环进入下一次迭代。
2012-12-24 16:15 举报
已邀请:
0

阿铭 管理员

赞同来自:

perl 删除文件
perl -e 'unlink "1.txt"'   // 删除当前目录下 1.txt
perl -e 'unlink "2.txt", "3.txt" //同时删除两个文件
perl -e 'unlink glob "*.pl"' //删除当前目录下以.pl为结尾的文件
perl -e 'unlink <*.txt>  //删除当前目录下以.txt为结尾的文件

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: