$i = 0; for (@emails){ @email = split /@/, $_; push @{ $domains{$email[1]} }, $i; $prefixes[$i] = $email[0]; $i++; } foreach $key (sort keys %domains) { foreach ( @{ $domains{$key} } ) { push @sortedEmails, ( $prefixes[$_] . "@" . $key ); } }