FLINTSTONES -- BARNEY, FRED, WILMA
JETSONS -- MAX, TONY, WILMA
SIMPSONS -- LISA, BARNEY, WILMA, HOMER
ALCATRAZ -- ELIJAH, MAX, WILMA
####
my %is_in_show = (
MAX => [ 'JETSONS', 'ALCATRAZ' ],
WILMA => [ 'FLINTSTONES', 'JETSONS', 'SIMPSONS', 'ALCATRAZ' ],
HOMER => [ 'SIMPSONS' ],
ELIJAH => [ 'ALCATRAZ' ],
...
);
####
while () {
chomp;
my ($show, $names) = split(/ -- /);
my @names = split(/, /, $names);
foreach my $name (@names) {
push(@{$is_in_show{$name}}, $show);
}
}
####
use strict;
use warnings;
my %is_in_show;
while () {
chomp;
my ($show, $names) = split(/ -- /);
my @names = split(/, /, $names);
foreach my $name (@names) {
push(@{$is_in_show{$name}}, $show);
}
}
foreach my $name (keys %is_in_show) {
my $shows = $is_in_show{$name};
my $num_shows = @$shows;
my $s = $num_shows == 1 ? '' : 's';
print("$name appears in $num_shows show$s: ",
join(' ', @$shows), "\n");
}
__DATA__
FLINTSTONES -- BARNEY, FRED, WILMA
JETSONS -- MAX, TONY, WILMA
SIMPSONS -- LISA, BARNEY, WILMA, HOMER
ALCATRAZ -- ELIJAH, MAX, WILMA