my @ALPHA; $ALPHA[ord $_]++ for 'a'..'z', 'A'..'Z'; sub hasalpha { my $str = shift; return $ALPHA[ord $str] if length $str < 2; my $pos = int rand length $str; return hasalpha(substr $str, 0, $pos) || hasalpha(substr $str, $pos); } print hasalpha('1231a21221');