use strict; my %byColor; while (){ my ($fruit, @colors) = split; for my $c(@colors){ push @{ $byColor{$c} }, $fruit; } } for my $c(sort keys %byColor){ print "$c\t @{$byColor{$c}}\n"; } __DATA__ strawberry red green rose apple red rose mango green