foreach $file (@files) { open(INP,"$file") or die "Cannot open file :$!\n"; while () { chomp; @line = split "\t",$_; if(exists $trans{$line[0]}) { $array[$j] = $line[1]; $trans{$line[0]} = \@array; } } close(INP); $j++; } foreach $key (keys %trans) { print OUT "$key\t"; foreach(@{$trans{$key}}) { print OUT "$_\t"; } print OUT "\n"; }