在文件中查找多个字符串 - Perl

时间:2017-05-30 19:49:29

标签: perl

我试图在perl的文本文件中找到多个字符串。我正在成功地工作,但它看起来效率不高:

 open(FILE,"$in" . "testFile.txt");
 my @file = <FILE>;
 close FILE;

 if(grep{/test1/} @file){
    ...
 }elsif(grep{/test2/} @file){
    ...
 }elsif(grep{/test3/} @file){
    ...
 }

我创建一个包含文件内容的数组,然后迭代3次。这看起来效率不高。有没有办法在一个if语句中使用它来减少迭代次数并在每个语句中重用代码?

1 个答案:

答案 0 :(得分:3)

假设您的字符串没有跨线边界,您可以一次读取一行文件,并一次测试所有三个字符串

open my $fh, "${in}testFile.txt" or die $!;

while ( <$fh> ) {

    if ( /test1/ or /test2/ or /test3/ ) {
        # Do something
        last;
    }
}
如果你愿意,你可以把它折叠成一个正则表达式

if ( /test1|test2|test3/ ) { ...; last; }