use strict; my%a;my@a=split/ /,; while(@a){ my($a,$n)=splice@a,0,2; $a{$a}=$n>$a{$a}?$n:$a{$a}; } print join " ", %a; __DATA__ a.txt 4 b.txt 3 z.txt 1 a.txt 5 b.txt 2 b.txt 4 z.txt 2