我想你已經有讀取這些文件的代碼,只需要解析出這些值並對其進行組織。
設計部分提供了一個對每個開始,結束對都唯一的密鑰,但並不難。由於開始和結束都是數字,這應該是很容易的:
our %matchups ;
sub process
{
my ($lst_)= @_ ;
for (@$lst_) {
my ($strt,$endn)= /\d+\w+(\d+)\w+(\d+)/ ;
next unless $strt && $endn ;
my $key= "${strt}_$endn" ;
$matchups{$key}[0]= $_ ;
$matchups{$key}[1] ++ ;
}
}
sub outputmatch
{
my ($dest,$multi)= @_ ;
# open file
for (values %matchups) {
print $OUT $_->[0] if ($_->[1] > 1) == $multi ;
}
}
{
process(@listfrom1txt) ;
process(@listfrom2txt) ;
outputmatch("common.txt", 1) ;
outputmatch("uniq.txt", 0) ;
}
所以在這裏我們做一個關鍵是start_end
,然後我們建立這兩個元素的數組散列中的數據結構。第一個元素是原始行,第二個元素是我們看過此條目的次數。
如果一條線是唯一的,則計數將爲1
;如果不是,那麼它將大於1
。
感謝您的幫助。我能夠從中理解的是我們製作了一個關鍵的開始和結束對。但我的問題是我有兩個文件。如何比較一個文件的密鑰對與其他。 –
哈希'%matchups'是你用'process()'提供的所有文件的合併。通過輸入兩個文件,您將擁有計數爲「1」(唯一)的行和具有計數爲「2」的行(兩個文件中都存在)。 – woolstar