use strict; use warnings; my %hash; while () { 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 #### 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