Assuming the content of the files are (2 files here):
my %files = (
file1 => [
'gi|100816391|ref|NM_003934.1| 1 162 192',
'gi|104485445|ref|NM_138572.2| 7 2316 2376',
'gi|105554499|ref|NR_002791.2| 1 2792 2867',
'gi|100816391|ref|NM_003934.1| 1 162 192',
'gi|104485445|ref|NM_138572.2| 7 2316 2376',
],
file2 => [
'gi|104485445|ref|NM_138572.2| 7 2316 2376',
'gi|105554499|ref|NR_002791.2| 1 2792 2867',
'gi|105554499|ref|NR_002791.2| 1 2792 2867',
'gi|104485445|ref|NM_138572.2| 7 2316 2376',
]
);
Piece of script:
my %data;
# Here you have to loop on all your files
# and do open ... while() ... instead of this foreach loop
foreach my $file (keys %files) {
foreach (@{$files{$file}}) {
$data{$_}{$file}++;
}
}
foreach my $data (keys(%data)) {
my $freq = $data;
foreach my $file (sort keys %files) {
$freq .= "\t$file:" . (exists$data{$data}{$file} ? $data{$data}{$file} : 0);
}
print $freq,"\n";
}
output:
gi|105554499|ref|NR_002791.2| 1 2792 2867 file1:1 file2:2
gi|100816391|ref|NM_003934.1| 1 162 192 file1:2 file2:0
gi|104485445|ref|NM_138572.2| 7 2316 2376 file1:2 file2:2