Я хочу посчитать количество букв в верхнем регистре в строке, используя perl.
Например: мне нужно знать, сколько символов в верхнем регистре содержит слово "EeAEzzKUwUHZws".
Остерегайтесь Unicode, поскольку прямая A-Z не очень переносима для других символов, таких как заглавные буквы с акцентом. если вам нужно с этим справиться, попробуйте:
my $result = 0; $result++ while($string =~ m/\p{Uppercase}/g);
Используйте оператор tr:
tr
$upper_case_letters = $string =~ tr/A-Z//;
Это распространенный вопрос, и оператор tr обычно превосходит другие методы .
sub count { $t = shift; $x = 0; for( split//,$t ) { $x++ if m/[A-Z]/; } return $x; }
Однострочный метод:
$count = () = $string =~ m/\p{Uppercase}/g
Это основано на ответе Стюарта Ватта , но изменено в соответствии с подсказкой , которую выложили в комментариях, чтобы сделать его однострочным.