__DATA__ name1 4.5 name3 name5 6.5 name4 -7.9 name6 3.2 #### my @order = qw(name1 name2 name3 name4 name5 name6); map{/(\S+)\s+(-?[\d.]+)/;$a{$1}=$2?$2:'';print "$1 -- $2 \n";}; map{push(@result,defined $a{$_} ? $a{$_} : 999)}@order; print join("\n", @result),"\n"; __DATA__ name1 4.5 name3 name5 6.5 name4 -7.9 name6 3.2