- 論壇徽章:
- 0
|
大家好,請教一個問題!望大家指點迷津...1.前提:在一個目錄下有N個文件(文件類型一致),且每一個文件中都有兩列,格式如下:
假設這是第一個文件的內容:
ID value1
gene1 1
gene2 2
gene3 3
..
..
2.目的: 為了將這N個文件的內容根據相同ID(即第一列)合并在一起,最終格式是:
ID value1 value2 .......valueN
gene1 1 2 ...... 1
gene2 2 4 ...... 10
gene3 3 6 ...... 12
.. .. .. ...... ..
.. .. .. ...... ..
3.大體思路:是第一個文件和第二個文件比,第二個文件和第三個文件比,以此類推
for my $j(0 .. @files2-1){
if(-e "$files2[$j]"){
open my $input,$files2[$j] or (die "$!");
while(<$input>){
chomp;
my($id1,$value1)=split/\t/;
$hash{$id1}=$value1;
}
}
if(-e "$files2[$j+1]"){
open my $input2,$files2[$j+1] or (die "$!");
while(<$input2>){
chomp;
my($id2,$value2)=(split/\t/,$_);
if(exists ...){
print "$id2\t$hash{$id1}\t$value2\n"; 這個弊端就是只能得到兩列
}
}
}
該如何才能得到在前一輪輸出的列后面繼續呢!
謝謝大家了!
|
|