我正在對兩行文本文件ref.txt
(參考)和log.txt
進行比較。但是任何一個文件中可能會有任意數量的空白行,我想忽略它們;我怎麼能做到這一點?比較兩個文件時,如何跳過(忽略)空白行?
ref.txt
one
two
three
end
log.txt的
one
two
three
end
會有輸出沒有不正確的日誌行,在log.txt
與ref.txt
匹配等字樣。
我喜歡什麼僞代碼來完成:
while (traversing both files at same time) {
if ($l is blank line || $r is blank line) {
if ($l is blank line)
skip to next non-blank line
if ($r is blank line)
skip to next non-blank line
}
#continue with line by line comparison...
}
我當前的代碼:
use strict;
use warnings;
my $logPath = ${ARGV [0]};
my $refLogPath = ${ARGV [1]} my $r; #ref log line
my $l; #log line
open INLOG, $logPath or die $!;
open INREF, $refLogPath or die $!;
while (defined($l = <INLOG>) and defined($r = <INREF>)) {
#code for skipping blank lines?
if ($l ne $r) {
print $l, "\n"; #Output incorrect line in log file
$boolRef = 0; #false==0
}
}
對我來說,寫下'除非$ line =〜/ \ S /'似乎更容易理解(至少對我來說)。 – 2012-07-20 10:34:46
@DaveCross我想你的版本可以確保在線讀取有一些東西。總是有更多的方法來完成它INT Perl! – squiguy 2012-07-20 13:05:38
是的。在處理一個太多的「空行」實際上包含空格和/或製表符的文件之後,我切換到了我的方法。 – 2012-07-20 13:11:34