perl Получить индексы совпадений в массиве - PullRequest
3 голосов
/ 28 октября 2010

Я хочу найти элемент в массиве.Что я хочу получить из этого поиска, так это все индексы массива, в котором я нахожу совпадение.

Так, например, слово, которое я хочу найти:

$myWord = cat

@allMyWords = my whole file with multiple occurrences of cat in random positions in file

Если кошка находится на 3-й, 19-й и 110-й позиции, я хочу получить эти показатели в результате этого.Мне было интересно, есть ли маленький и простой способ сделать это.

Спасибо!

Ответы [ 2 ]

8 голосов
/ 28 октября 2010

Я получил ответ. Это код, который будет возвращать все индексы в массиве, где находится элемент, который мы ищем.

my( @index )= grep { $allMyWords[$_] eq $word } 0..$#allMyWords;
print "Index : @index\n";   
7 голосов
/ 28 октября 2010

С List :: MoreUtils :

use List::MoreUtils qw(indexes);

my @indexes = indexes { $_ eq 'cat' } @words;

Если вы еще не прочитали файл, вы можете прочитать его, используя «режим slurp»:

local $/; # enable slurp mode
my @words = split(/\s+/, <>);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...