我想在数组中搜索元素。我想从这次搜索得到的是我找到匹配的数组的所有索引。
因此,例如我想要搜索的单词是:
$myWord = cat
@allMyWords = my whole file with multiple occurrences of cat in random positions in file
所以,如果cat出现在第3,19和110位,我希望这些指数成为它的结果。我想知道是否有一个小而简单的方法来做到这一点。
谢谢!
答案 0 :(得分:8)
我得到了答案。这是将返回数组中我们要搜索的元素的所有索引的代码。
my( @index )= grep { $allMyWords[$_] eq $word } 0..$#allMyWords;
print "Index : @index\n";
答案 1 :(得分:7)
use List::MoreUtils qw(indexes);
my @indexes = indexes { $_ eq 'cat' } @words;
如果您尚未阅读该文件,可以使用“slurp mode”读取它:
local $/; # enable slurp mode
my @words = split(/\s+/, <>);