# Sorry about the MANY keyword - I would choose a better name
# for the secondary data, but I have no clue what would make
# sense.
my %keyhash = ( $id => { NAME => $name,
REF => $ref,
MANY => []
}
);
####
for ( @array1 ) {
my ($id,$name,$ref) = split /,/;
# You may wish to add some error checking to make sure the
# hash key $id does not already exist
$keyhash{$id} = { NAME => $name,
REF => $ref,
MANY => [],
}
}
for ( @array2 ) {
my ($id,$name,$ref) = split /,/;
# Warn and do nothing if a record is found for which the
# $id is not already in %keyhash
unless ( defined( $keyhash{$id} ) ) {
warn "No such record $id!\n";
next;
}
push @{$keyhash{$id}{MANY}}, [ $name, $ref ];
}
####
# A little something to get the plurality correct
for ( keys %keyhash ) {
my $num = @{$keyhash{$_}{MANY}};
printf "%s appeared %d %s\n",
$_,
$num,
$num > 1 ? "times" : "time";
}