我正在审查一个测试,我似乎无法得到这个例子来编写正确的代码。将两个文件合并为第三个使用perl
问题:编写一个名为ileaf的perl脚本,它将文件的行与另一个文件的行结合起来,将结果写入第三个文件。如果这些文件的长度不同,那么多余的行会写在最后。
样本调用: ileaf文件1文件2 OUTFILE
这是我有:
#!/usr/bin/perl -w
open(file1, "$ARGV[0]");
open(file2, "$ARGV[1]");
open(file3, ">$ARGV[2]");
while(($line1 = <file1>)||($line2 = <file2>)){
if($line1){
print $line1;
}
if($line2){
print $line2;
}
}
这将信息发送到屏幕,这样我可以立即看到结果。最后的版本应该“打印file3 $ line1;”我得到file1的全部,然后全部file2 w/out和行的交错。
如果我理解正确,这是一个函数使用“||”在我的while循环中。 while检查第一个比较结果,如果它真的落入循环。哪个只会检查file1。一旦file1为false,那么while检查file2并再次进入循环。
我能做些什么来交错线?
这是工作。我想我试图将太多的步骤合并到一个循环中。谢谢蒂姆。 – Larry
当然,'readline($ file1)'通常写成'<$file1>'。如果需要,打印到STDOUT并将输出重定向到文件也更为常见(因为它更加灵活)。 – ikegami