my %emails = (); foreach ( split(/\%/, $emailcolumn) ) { if ( my ($key, $value) = split(/\s*\:\s*/, $_, 2) ) { push ( @{ $emails{$key} }, $value); } } # foreach # do something with %emails