2013-12-03 5 views
0

В списке массиваКак найти повторяющиеся значения в списке массивов?

my @array = ('val1','val2','val3','val4','val1'); 

Я хотел бы получить выход, как показано ниже

Output: 
No of repetition of Val1 = 2 times 

Пожалуйста, помогите мне получить этот вывод.

Заранее благодарен!

+2

В Perl, '{...}' создает * хэш ссылочный *, а не массив - те, инициализируются с помощью list '(...)'. Вы должны учитывать 'use strict; использовать предупреждения ", как защитную сетку. – amon

ответ

2

Используйте хэш:

my @array = ('val1','val2','val3','val4','val1');  
my %seen; 
my $element; 
foreach $element (@array){ 
    $seen{$element}++ 
} 

foreach my $val (keys %seen){ 
    print "No of repetition of $val = $seen{$val} times\n" if ($seen{$val} > 1); 
} 

распечаток:

No of repetition of val1 = 2 times 
2
my @array = ('val1','val2','val3','val4','val1'); 

my %seen; 
$seen{$_}++ for @array; 

print "No of repetition of $_ = $seen{$_} times\n" 
    for grep $seen{$_} >1, sort keys %seen; 
Смежные вопросы