2011-10-26 5 views
1

私はファイルを取り込むperlスクリプトを作成しています(例./progファイル) ファイルを解析して文字列を検索する必要があります。これは私がうまくいくと思ったものですが、うまくいかないようです。このファイルは、50行を含む1行に1つのファイルです。Perl:ファイルを検索する

@array = < >; 
    print "Enter the word you what to match\n"; 
    chomp($match = <STDIN>);   

    foreach $line (@array){ 
     if($match eq $line){ 
      print "The word is a match"; 
      exit 
     } 
    } 
+0

は、それは文字列が2行にまたがることは可能ですか? – chovy

答えて

3

あなたのユーザー入力は、ファイルの行ではなく、あなたのchompingしています。

一致しません。一方は\nで終わり、もう一方は終わりではありません。 chompを取り除くことで問題は解決するはずです。 (またはループにchomp($line)を追加する)。

$match = <STDIN>; 

または

foreach $line (@array){ 
    chomp($line); 
    if($match eq $line){ 
     print "The word is a match"; 
     exit; 
    } 
} 

OPは以下のコメントから自分の間違いに気づくことを期待して編集:

==eqを変更すると、何かを "修正" しません。それはそれを壊す。文字列の比較にはeqを使用する必要があります。コードを修正するには、上記のいずれかを実行する必要があります。

$a = "foo\n"; 
$b = "bar"; 
print "yup\n" if ($a == $b); 

出力:

うん

+0

ユーザー入力とchomp @ arrayにchompを使わずに行ってください。私は、<>演算子がファイルを読み込んで、すべて\ n – jenglee

+0

のどちらかを実行すると思った。 '@array = < >;'改行を削除しません。 –

+0

私はループに$ chompを追加します。$ match eq chomp($ line)。しかし、私がそれを実行すると、if($ match eq chomp($ line))を実行していないようです。 – jenglee

関連する問題