使用数组作为搜索项的Perl正则表达式

时间:2014-12-26 22:44:17

标签: arrays regex perl

我正在尝试在文件中搜索给定的单词并返回整行。

如果我专门定义了如下所示的单词,它可以很好地工作但是我想使用一系列可以用于正则表达式的关键字我将如何进行此操作?

使用的关键字来自存储为

的文本文件
Hello
Cat
Dog

使用代码调用它们:

$words = '/computer/textfile';       
open(WORDS, $words);                
@wordarray =  <WORDS>;

这有效:

while($line = <FILE>) {   
    if($line =~ /Hello/) {
        print "$line\n";
    }
}

这不起作用:

while($line = <FILE>) {
    if($line =~ @wordarray) {
        print "$line\n";
    }
}

1 个答案:

答案 0 :(得分:4)

if($line =~ /foo|bar|baz/)

my @kwarray = qw(foo bar baz);
my $keywords_re = join('|', map { quotemeta $_ } @kwarray);
...
if($line =~ /$keywords_re/o)