use warnings; use strict; my @aircraft = qw(AD3 DAL13 DAL14 DBR2 DBR4 DBR3 DEHA2 FG3 FG6); my %byGroup; push @{$byGroup{$_->[1]}}, $_->[0] for map {[/(([A-Z]+).*)/]} @aircraft; printf "Group %5s: %s\n", $_, "@{$byGroup{$_}}" for sort keys %byGroup;