use strict; use warnings; my %hash; while () { s/\s+$//; my ($key1, $key2) = split /\s+/, $_; $hash{$key1}{$key2}++; } for my $k1 (sort keys %hash) { print "$k1: ", join(", ", sort keys %{$hash{$k1}}), "\n"; } __DATA__ Lemon Juice Lemon Cake Apple Cider Lemon Cake Apple Butter Apple Sauce Apple Juice Lemon Juice #### Apple: Butter, Cider, Juice, Sauce Lemon: Cake, Juice