perl获取数组中匹配项的索引

时间:2010-10-28 05:33:51

标签: perl

我想在数组中搜索元素。我想从这次搜索得到的是我找到匹配的数组的所有索引。

因此,例如我想要搜索的单词是:

$myWord = cat

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

所以,如果cat出现在第3,19和110位,我希望这些指数成为它的结果。我想知道是否有一个小而简单的方法来做到这一点。

谢谢!

2 个答案:

答案 0 :(得分:8)

我得到了答案。这是将返回数组中我们要搜索的元素的所有索引的代码。

my( @index )= grep { $allMyWords[$_] eq $word } 0..$#allMyWords;
print "Index : @index\n";   

答案 1 :(得分:7)

使用List::MoreUtils

use List::MoreUtils qw(indexes);

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

如果您尚未阅读该文件,可以使用“slurp mode”读取它:

local $/; # enable slurp mode
my @words = split(/\s+/, <>);