use strict; use warnings; my $addr = q{xqwertyxyx@gmail.com}; my ( $name ) = $addr =~ m{^([^@]+)}; my %letterFreq; $letterFreq{ $_ } ++ for split m{}, $name; print map { qq{$_: $letterFreq{ $_ }\n} } sort { $letterFreq{ $b } <=> $letterFreq{ $a } || $a cmp $b } keys %letterFreq;