hash → key: given name, value: somearray
somearray → reference to array of families
family → reference to array of given names
Not sure how you want it printed.
use warnings;
use strict;
my %data;
foreach my $string (
'flinstones,fred,barney,willma,betty',
'flinstones,dino',
'doe,joe,jane',
) {
my @family = split(/\s*,\s*/, $string);
my $surname = shift @family;
push @{$data{$surname}}, [ @family ];
}
# use Data::Dumper;
# print Dumper(\%data);
foreach my $surname (keys %data) {
my $somearray = $data{$surname};
foreach my $family (@$somearray) {
foreach my $given (@$family) {
print("$given $surname\n");
}
print("--", "\n");
}
}
outputs
joe doe
jane doe
--
fred flinstones
barney flinstones
willma flinstones
betty flinstones
--
dino flinstones
--
|