redo 操作符在不经重新计算条件的情况下重新开始一个循环块。用法如下:
text
redo LABEL
redo如果省略了 LABEL,那么该操作符指向最内层的闭合循环。该操作符通常用于那些希望欺骗自己输入的程序:
perl
while() {
if (s/\\\n$// && defined($nextline =)) {
$_ .= $nextline;
redo;
}
print; # 或者别的什么...
}redo 不能用于退出一个有返回值的块,比如 eval {},sub {},或者 do {},并且不能用于退出一个 grep 或者 map 操作。在打开了警告的时候,如果你 redo 一个不在你的当前词法范围的循环,那么 Perl 会警告你。
一个块本身等效于一个只执行一次的循环。因此在这样的块里的 redo 将很有效地把它变成一个循环构造。
评论
0评论加载中…