2013-05-14 2 views
-2

У меня есть массив строк @Sentences, и я пытаюсь найти лучший способ индексировать каждое вхождение каждого слова относительно номера строки, в которой они находятся. Я решил сделать это с помощью вложенного цикла и двухмерного массива, но не повезло.Индексирование каждого вхождения ключа в массив строк с perl

+4

Не могли бы вы включить код, который вы пытались использовать? – Jerry

+0

Не могли бы вы также добавить несколько примеров текста? –

ответ

2

Если предположить, что слова разделяются пробелами (корректировать по мере необходимости)

my $index = {}; 
my $line=0; 
for my $s (@Sentences) 
{ 
    $line++; 
    for my $w (split $s) 
    { 
     push @{$index->{$w}},$line; 
    } 
} 

Это создает хеш, ключи которого слова и значения которых arrayrefs, содержащие списки номеров строк, в которых появляются эти слова.

+0

С этим, как я могу сортировать хэш по количеству номеров в списке, чтобы его можно было распечатать? – user1074989

+1

'для my $ key (sort {@ {$ index -> {$ a}} <=> @ {$ index -> {$ b}} keys% $ index)' –

Смежные вопросы