
一、循环类型
常用的循环类型如下:
| 循环类型 | 特征 |
| while | 判断语句true循环,false结束 |
| until | 判断语句false循环,true结束 |
| for | for(起始语句;测试语句;步进语句){...}按顺序执行起始,测试和步进。 |
| 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
本文详细介绍了Perl编程中的循环类型,包括while、until、for、foreach以及do...while和do...until循环,并通过示例展示了它们的用法和区别。此外,还探讨了循环控制语句next、last和redo的功能,解释了它们如何影响循环的执行顺序。这些内容对于理解和掌握Perl中的循环控制至关重要。
1397

被折叠的 条评论
为什么被折叠?



