我正在審查一個測試,我似乎無法得到這個例子來編寫正確的代碼。將兩個文件合併爲第三個使用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