我从未想过这是可能的,但看到了一些相互矛盾的评论,于是想请专家解答。
如果我正在通过while循环逐行读取文件并进行进展,是否有办法在当前迭代将是循环中的最后一次迭代时执行一些代码?我知道我可以将此代码直接放在while循环之后,以便在最后一行之后执行该代码,但我只是想知道是否迭代有任何方法来检测它的位置。
谢谢!
我从未想过这是可能的,但看到了一些相互矛盾的评论,于是想请专家解答。
如果我正在通过while循环逐行读取文件并进行进展,是否有办法在当前迭代将是循环中的最后一次迭代时执行一些代码?我知道我可以将此代码直接放在while循环之后,以便在最后一行之后执行该代码,但我只是想知道是否迭代有任何方法来检测它的位置。
谢谢!
while(<>) {
if(eof) {
print "The last line of the file!\n";
}
}
print "The last line of the file!\n"
移到了 while
循环内部,有些人会说这是一个干扰。 - Borodin虽然在某些特殊情况下可能确定当前迭代是最后一次,但在一般情况下不可能。一个简单的例子:
while (rand() < 0.99) {
print "Hasn't ended yet\n";
}
由于无法预测下一个随机数是什么,因此显然无法知道任何给定迭代是否为最终迭代。
eof
和eof()
之间的区别- 在一个while(<>)
循环中,较短的可能会在 @ARGV 包含多个文件时被判定为真(true)多次,而较长的只会返回一次真(true)。 - vapace