I think it would be better as a
Hash-of-Arrays:
use strict;
use warnings;
my %hash;
while (<DATA>) {
chomp;
my ($dept,$email)=split(/:/);
push @{ $hash{$dept} }, $email;
}
for (sort keys %hash) {
print "$_:", join(',', @{ $hash{$_} }), "\n";
}
__DATA__
sales:bob@foo.com
sales:joe@foo.com
retail:steve@bar.com
sales:debbie@foo.com
sales:john@foo.com
support:david@blah.com
retail:judy@bar.com
support:jose@blah.com
Prints:
retail:steve@bar.com,judy@bar.com
sales:bob@foo.com,joe@foo.com,debbie@foo.com,john@foo.com
support:david@blah.com,jose@blah.com