while ($l = ) { @a = split(/\s+/, $l); $fn{$a[1]} = $a[0]; $pn{$a[1]} = $a[2]; } foreach $i (sort(keys(%fn))) { printf "%10s, %10s, %30s\n", $i, $fn{$i}, $pn{$i}; }