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; #### x: 3 y: 2 e: 1 q: 1 r: 1 t: 1 w: 1