-1

パターン マッチングの問題に関して非常に単純な perl の質問があります。名前のリストを含むファイル (fileA) を読み込んでいます。これらの名前のいずれかが別のファイル (fileB) に存在するかどうかを確認したいと思います。

if ($name -e $fileB){
    do something
}else{
    do something else
}

ファイルにパターンが存在するかどうかを確認する方法です。私が試してみました

open(IN, $controls) or die "Can't open the control file\n";
    while(my $line = <IN>){
            if ($name =~ $line ){
                    print "$name\tfound\n";
            }else{
                    print "$name\tnotFound\n";
            }
    }

名前が存在するかどうかをチェックするのではなく、すべてのエントリをチェックして出力するため、これが繰り返されます。

4

3 に答える 3

1

ファイルにパターンが存在するかどうかを確認するには、ファイルを開いてその内容を読み取る必要があります。2 つのリストが含まれているかどうかを検索する最も速い方法は、コンテンツをハッシュに格納することです。

#!/usr/bin/perl
use strict;
use warnings;

open my $LST, '<', 'fileA' or die "fileA: $!\n";
open my $FB,  '<', 'fileB' or die "fileB: $!\n";

my %hash;
while (<$FB>) {
    chomp;
    undef $hash{$_};
}

while (<$LST>) {
    chomp;
    if (exists $hash{$_}) {
        print "$_ exists in fileB.\n";
    }
}
于 2013-06-13T13:47:29.250 に答える