$ perl -MO=Deparse -walne '$;="\t";$i||=0;$h{$i,$F[0]}.="$F[1]" } continue { $i++ if eof; END{print "$_:\t" . $h{$_} for sort keys %h}' file1.txt file2.txt BEGIN { $^W = 1; } BEGIN { $/ = "\n"; $\ = "\n"; } LINE: while (defined($_ = )) { chomp $_; our(@F) = split(' ', $_, 0); $; = "\t"; $i ||= 0; $h{join $;, $i, $F[0]} .= "$F[1]"; } continue { ++$i if eof; } sub END { print "${_}:\t" . $h{$_} foreach (sort keys %h); } -e syntax OK