last
顾名思义,这也就是最后的意思,因此Perl看到这个关键字就会相当高兴,表示他距离休息又靠近了一步。不过这样可以提前结束回圈的函数到底扮演著甚么样
的角色呢?让我们来试试:
for (1...10) {
last if ($_ == 8);
print; # 这样会印出 1...7
}
好玩吧,当你在回圈内加上了另外一个判断式,并且允许回圈在某个条件下跳出回圈的执行,这时候,Perl就提早下班,回家休息了。当然,last的使用是
有限制的,也就是他只允许在可以执行结束的区块内,其中最常被应用的是在回圈内,而这里的回圈指的是for,foreach,while,until,另
外也可以在单独的区块中使用,就像这样:
print "start\n";
{
print "last 前执行\n"; # 会顺利印出
last;
print "这里就不执行了\n"; # 所以这一行永远不会被执行
}
print "然后就结束了\n";
没错,这个例子的程式确实非常无趣,因为我们写了一行永远不会执行的程式,不过却让我们透过这个小程式清楚的看到last的执行过程。所以我们可以轻易的
让Perl跳出某个区块,而既然可以提前结束区块的执行范围,我们有时候也需要Perl可以重复执行回圈内的某些条件这时候redo这个函式就派上用场了
。
顾名思义,这也就是最后的意思,因此Perl看到这个关键字就会相当高兴,表示他距离休息又靠近了一步。不过这样可以提前结束回圈的函数到底扮演著甚么样
的角色呢?让我们来试试:
for (1...10) {
last if ($_ == 8);
print; # 这样会印出 1...7
}
好玩吧,当你在回圈内加上了另外一个判断式,并且允许回圈在某个条件下跳出回圈的执行,这时候,Perl就提早下班,回家休息了。当然,last的使用是
有限制的,也就是他只允许在可以执行结束的区块内,其中最常被应用的是在回圈内,而这里的回圈指的是for,foreach,while,until,另
外也可以在单独的区块中使用,就像这样:
print "start\n";
{
print "last 前执行\n"; # 会顺利印出
last;
print "这里就不执行了\n"; # 所以这一行永远不会被执行
}
print "然后就结束了\n";
没错,这个例子的程式确实非常无趣,因为我们写了一行永远不会执行的程式,不过却让我们透过这个小程式清楚的看到last的执行过程。所以我们可以轻易的
让Perl跳出某个区块,而既然可以提前结束区块的执行范围,我们有时候也需要Perl可以重复执行回圈内的某些条件这时候redo这个函式就派上用场了
。