是否可以检测当前while循环迭代是否是perl中的最后一次?
我从未想过这是可能的,但读到一些相互矛盾的评论,我想我会问专家 如果我正在通过一个while循环逐行读取文件,如果当前迭代是循环中的最后一次迭代,有没有办法执行一些代码?我知道我可以直接将代码放在while循环之后,这样代码就可以在最后一行之后执行,但我只是想知道迭代是否有任何方法可以检测它的位置是否可以检测当前while循环迭代是否是perl中的最后一次?,perl,loops,while-loop,Perl,Loops,While Loop,我从未想过这是可能的,但读到一些相互矛盾的评论,我想我会问专家 如果我正在通过一个while循环逐行读取文件,如果当前迭代是循环中的最后一次迭代,有没有办法执行一些代码?我知道我可以直接将代码放在while循环之后,这样代码就可以在最后一行之后执行,但我只是想知道迭代是否有任何方法可以检测它的位置 谢谢 在从文件读取的特殊情况下,是的 while(<>) { if(eof) { print "The last line of the file!\n";
谢谢 在从文件读取的特殊情况下,是的
while(<>) {
if(eof) {
print "The last line of the file!\n";
}
}
while(){
如果(eof){
打印“文件的最后一行!\n”;
}
}
虽然在某些特殊情况下可以确定当前迭代是最后一次,但在一般情况下不可能。一个简单的例子:
while (rand() < 0.99) {
print "Hasn't ended yet\n";
}
while(rand()<0.99){
打印“尚未结束\n”;
}
由于不可能预测下一个随机数是什么,因此显然不可能知道任何给定的迭代是否是最终迭代。参见Perl。还要注意
eof
和eof()
-在while()
循环中的区别,短的可能多次为真@ARGV有多个文件,长的可能只返回一次真。太好了,谢谢你的建议@HunterMcMillen,在一般情况下,循环如何知道下次评估时该条件将为假?@jake9115:它真正做的只是将打印“文件的最后一行!\n”
移动到而循环中,有人会说这是一种干扰。