Perl入门学习(六)循环语句

本文详细介绍了Perl编程中的循环类型,包括while、until、for、foreach以及do...while和do...until循环,并通过示例展示了它们的用法和区别。此外,还探讨了循环控制语句next、last和redo的功能,解释了它们如何影响循环的执行顺序。这些内容对于理解和掌握Perl中的循环控制至关重要。

e83fd40e9c2c48b1b1593258667c7def.jpg

一、循环类型

常用的循环类型如下:

循环类型特征
while判断语句true循环,false结束
until判断语句false循环,true结束
forfor(起始语句;测试语句;步进语句){...}按顺序执行起始,测试和步进。
foreach循环一个数组,将每一个元素赋值给一个标量,直到所有元素循环一次
do..while先循环后判断,结果为true继续循环,结果为false跳出循环
do...until

先循环后判断,结果为false继续循环,结果为true跳出循环

1、while循环

#!/usr/bin/perl -w use strict
$num = 1;;
while ($num < 5) {
++$num ;
print "$num \n";
}

第一次判断时$num=1,小于5进入循环,执行加1的操作后继续循环,直到$num=5跳出循环,运行结果如下:

./script.pl
-> 2
   3
   4

2、until循环

#!/usr/bin/perl -w use strict
$num = 1;;
until ($num < 5) {
++$num ;
}
print "$num \n";

与while循环不同的是,until判断为false才循环,所以这里$num<5为true,跳出循环,运行结果如下:

./script.pl
-> 1

3、do...while循环

#!/usr/bin/perl -w use strict
$num = 1;;
do {
++$num ;
print "$num \n";
} while ($num < 5)

do...while需要先循环一次,所以第一次判断的时候$num=2,但判断语句又是相同的,所以运行结果也是一样的,运行结果如下:

./script.pl
-> 2
   3
   4
   5

4、do...until循环

#!/usr/bin/perl -w use strict
$num = 1;;
do {
++$num ;
} until ($num < 5)
print "$num \n";

和上面do...while例子相同,判断开始时由于已经循环过一次了,所以$num=2,运行结果如下:

./script.pl
-> 2

5、for循环

#!/usr/bin/perl -w use strict
for ($num = 1 ; $num < 5 ; ++ $num) {
print "$num \n"
}

 顺序执行起始语句,给$num赋值为1,然后判断$num<5是否为true,为true执行循环体,每循环一次,执行一次步进语句($num逐次+1),运行结果如下:

./script.pl
-> 1
   2
   3
   4

6、foreach循环

#!/usr/bin/perl -w use strict
@list = (1,2,3,4,5);
foreach $num (@list) {
print "$num \n"
}

foreach需要调用数组@list中的每一个元素给$num赋值,直到每个元素都被调用一遍,所以运行结果如下:

./script.pl
-> 1
   2
   3
   4
   5

二、循环控制语句

循环控制语句改变循环代码的执行顺序,通过它实现代码的跳转。

常用循环控制语句如下:

控制语句描述
next停止执行本次循环,开始下一轮循环,next理解为下一次
last退出所在的循环,last理解为最后一次
redo回到循环开始,重复本次循环,不会跳出本次循环。

1、last

#!/usr/bin/perl -w use strict
@list = (1,2,3);
foreach $num (@list) {
$i=1;
  while ($i <= $num) {
    ++$i;
    print "befor last \n";
    last ;
    print "after last \n";
  }
  print "$num \n"
}

如上示例,因为last的存在,while循环在每个foreach循环里只循环一次,结束while循环并不会中断foreach循环,所以运行结果如下:

./script.pl
-> before last
   1
   before last
   2
   before last
   3

2、next语句 

#!/usr/bin/perl -w use strict
@list = (1,2,3);
foreach $num (@list) {
$i=1;
  while ($i <= $num) {
    ++$i;
    print "befor next \n";
    next ;
    print "after next \n";
  }
  print "$num \n"
}

next只会结束当此循环开始下一次循环,所以num=2时while循环两次,num=3时循环三次,运行结果如下:

./script.pl
-> befor next 
   1 
   befor next 
   befor next 
   2 
   befor next 
   befor next 
   befor next 
   3 

3、 redo

#!/usr/bin/perl -w use strict
@list = (1,2,3);
$i = 1;
foreach $num (@list) {
    if ($i == $num) {
      print "before redo \$num=$num \$i=$i\n";
      ++$i;
      redo ;
    } else {
        print "after redo \$num=$num \$i=$i\n";
    }
}

每次redo都会重新进行if($i ==$num)的判断,运行结果如下:

./script.pl
-> before redo $num=1 $i=1
   after redo $num=1 $i=2
   before redo $num=2 $i=2
   after redo $num=2 $i=3
   before redo $num=3 $i=3
   after redo $num=3 $i=4

 

 

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾陆楼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值