perl在读取文件时嵌套

lol*_*ity 0 perl loops filehandle while-loop

我想比较两个文件,所以我写了下面的代码:

while($line1 = <FH1>){
     while($line2 = <FH2>){
         next if $line1 > $line2;
         last if $line1 < $line2;
     }
     next;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,当外部循环到达file1的下一行然后进入内部循环时,内部while语句将再次从file2的第一行读取,或者继续在上一次外部迭代中停止的位置环?

谢谢

Bor*_*din 7

你应该总是 use strictuse warnings在开始所有程序和在其第一次使用点声明所有变量.这尤其适用于您在寻求代码帮助时.

您文件中的所有数据都是数字的吗?如果没有,那么启用警告会告诉你的是,<>运营商是相当比较数值比一般的字符串.

一旦文件被完全读取 - 即第二个循环的while条件终止 - 你可以不再读取文件中的数据,除非open它再次使用或用于seek倒回到开头.

通常,在这些情况下,最好将两个较小的文件读入一个数组并使用那里的数据.如果两个文件都非常大,那么必须要做一些特别的事情.

你想做什么样的文件比较?您确定两个文件是否相同,或者第二个文件中的所有数据都显示在第一个文件中,还是其他内容?请举例说明您的两个数据文件,以便我们为您提供更好的帮助.