typex ...... typey ..... typea ..... typez ...... #### typea name5 9 8 2 1 typex name1 1 2 3 4 name3 2 3 3 1 typey name2 3 4 5 6 typez name4 5 3 4 2 #### my %types; while () { chop; m/(.*)\s([^\s]+)$/ or next; push @{$types{$2}}, $1; } foreach my $type (keys %types) { print "$type\n"; print "$_\n" for @{$types{$type}}; } __DATA__ name1 1 2 3 4 typex name2 3 4 5 6 typey name3 2 3 3 1 typex name4 5 3 4 2 typez name5 9 8 2 1 typea #### typex name1 1 2 3 4 name3 2 3 3 1 typea name5 9 8 2 1 typey name2 3 4 5 6 typez name4 5 3 4 2 #### # Under Construction