my %emails = (); foreach ( split(/\%/, $emailcolumn) ) { if ( my ($key, $value) = split(/\s*\:\s*/, $_, 2) ) { push ( @{ $emails{$key} }, $value); } } # foreach # do something with %emails #### %emails = ( SMTP => [ 'makeusbetter@domain.com', ...], X400 => [ 'c=US;a= ;p=domain ;o=domain;s=makeusbetter', ... ], smtp => [ ..., ...], CCMAIL => [..., ...] );