foo 73 bar 35 word 27 blah 23 ... #### for(@files){ open IN, $_; while(){ /^(.*)\t(.*)$/; $f{$1}+=$2; } } @p=values %f; @q=keys %f; @i=sort{$p[$b]<=>$p[$a]} 0..$#p; open OUT, '>', $outpath; for(@i){ print OUT "$q[$_]\t$p[$_]\n"; }