2016-04-10 3 views
0

У меня есть массив, который имеет только буквы в нем, без цифр. Я хочу посчитать количество раз, которое показывает конкретное письмо. Я не хочу использовать хэш, мне нужно сохранить порядок списка.Как подсчитать количество конкретных букв в массиве Perl?

use strict; 
use warnings; 

my %counts; 
$counts{$_}++ for @array; 
print "$counts\n"; 
+0

Пожалуйста, покажите пример ввода и ожидаемый результат. – zdim

+0

Непонятно, должна ли строка в массиве «aaa» считаться 1 или 3. – Zaid

ответ

1

grep Используйте для, чтобы сделать это

my @ar = qw(abc cde fgh 123 abc); 
my $count = grep{ /ab/} @ar; 
print $count; 

Или использовать Еогеасп

my @ar = qw(abc cde fgh 123 abc); 
my $m; 
$m+= /ab/,foreach (@ar); 
print $m; 

Хотя матч был встречен $m будет увеличиваться.

2

Код, который, как представляется, работает, находит для подсчета вхождений. Единственная проблема, с которой вы сталкиваетесь, заключается в отображении счетчиков. Вы используете новую скалярную переменную под названием $counts, которая не объявлена ​​и пуста.

Что вы хотите, это:

use strict; 
use warnings; 

my %counts; 
$counts{$_}++ for @array; 
print "$_: $counts{$_}\n" for keys %counts; 
Смежные вопросы