
202
|
第
10
章
和另外两个操作符一样,
redo
在
5
种循环块里都可以使用,并且在循环块嵌套的情况
下只对最内层的循环起作用。
next
和
redo
之间最大的区别在于,
next
会正常继续下一次迭代,而
redo
则会重新
执行这次的迭代。下面的程序可以让你体验这三种操作符在工作方式上的区别:
foreach (1..10) {
print "Iteration number $_.\n\n";
print "Please choose: last, next, redo, or none of the above? ";
chomp(my $choice = <STDIN>);
print "\n";
last if $choice =~ /last/i;
next if $choice =~ /next/i;
redo if $choice =~ /redo/i;
print "That wasn't any of the choices... onward!\n\n";
}
print "That's all, folks!\n";
如果不键入任何字符,只是按下回车键,则循环会逐次增加计数。如果你在显示数字
4
的时候选择
last
,那么循环就会因此而结束,你将看不到数字
5
;如果你在显示数
字
4
的时候选择
next
,就会直接跳到数字
5
而不提示“
onward
”信息;如果你在显
示数字
4
的时候选择
redo
,那么会回到
4
这个数字上重来。
带标签的块
当你需要从内层对外层的循环块进行控制时,请使用标签( ...