2017-05-30 11 views
-1

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回反復保持する配列を作成します。これは効率的ではないようです。 1つのif文でこれを取得して、各文の反復とコードの再利用を減らす方法はありますか?

+0

* "非常に効率的ではないようです" *あなたの目的があまりにも遅く実行されているとか、コードが多いようですか? 'または'演算子について聞いたことがありますか? – Borodin

答えて

3

、あなたがあなたであれば、単一の正規表現の中にそれを折りたたむことができ

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

while (<$fh>) { 

    if (/test1/ or /test2/ or /test3/) { 
     # Do something 
     last; 
    } 
} 

一度にすべての3つの文字列のためのあなたのファイルを一度にライン、およびテストをしませクロスラインの境界を読み取ることができない、あなたの文字列を想定すると、希望

if (/test1|test2|test3/) { ...; last; } 
関連する問題