是否有可能检测当前while循环迭代是否是perl中的最后一个?

时间:2013-10-15 20:04:24

标签: perl loops while-loop

我从未想过这是可能的,但请阅读一些相互矛盾的评论,并认为我会问专家。

如果我正在逐行读取文件的while循环,如果当前迭代将是循环中的最后一次迭代,是否有办法执行某些代码?我知道我可以简单地将这段代码放在while循环之后,这样代码就会在最后一行之后执行,但我只是想知道迭代是否有办法检测它的位置。

谢谢!

2 个答案:

答案 0 :(得分:6)

在您正在阅读文件的特殊情况下,是的。

while(<>) {
    if(eof) {
        print "The last line of the file!\n";
    }
}

答案 1 :(得分:4)

虽然可能存在某些特殊情况,可以确定当前迭代是最后一次,但在一般情况下是不可能的。一个简单的例子:

while (rand() < 0.99) {
  print "Hasn't ended yet\n";
}

由于无法预测下一个随机数是什么,显然不可能知道任何给定的迭代是否是最后一次迭代。