1

非常に単純なテキスト ファイルを解析し、それを配列に操作しています。プログラムの最後のステップで、ユーザーが指定した用語を検索しようとしています。私は多くのことを試しましたが、それを機能させることができないようです.私は、事実が配列にあることを知っている用語を検索します.それはまだ見つかりません. 「分割」、「チョップ」、および「ソート」関数の実行中に変数がいつかいじられるかもしれないという予感がありますが、正確にはわかりません。

print "\n";
print "Enter a term you would like to search for: \n";

my $element = <STDIN>;

$num = grep(/$element/,@final);

if($num > 0){
print ("Term: " . $element . " found " . $num . " times. \n");
}else{
print "Not found. \n";
}

したがって、「apple」という用語がリストにあるという事実を知っています。「apple」という用語を検索すると、見つからなかったことが出力されます。助けてください!!

4

2 に答える 2

5

試してみてください

chomp(my $element = <STDIN>);

標準入力には末尾の改行があり、それ以外の場合は検索で一致するためです。例えば:

$element = "foo\n";   
grep /$element/, "foo bar";  # will not match

入力ではメタ文字が解釈されることにも注意してください。したがって、たとえば、foo?「fo の後に任意の o が続く」と見なされます。quotemetaまたはを使用できることを回避するには\Q ... \E、たとえば正規表現で次のように使用します。

/\Q$element\E/
于 2012-12-11T20:29:57.290 に答える
0

これをやってみてください:

use Data::Dumper;

my @final = <DATA>;
chomp(@final);
print Dumper \@final;

print "Enter a term you would like to search for >>> ";
chomp(my $element = <STDIN>);

$num = grep { /$element/ } @final;

if ($num > 0){
    print("Term: $element found $num times\n");
}
else{
    print("Not found. \n");
}


__DATA__
foo
bar
base

ノート

  • そうでない場合は、代わりにchomp()grepしようとしていますelement\nelement
  • Data::Dumper任意のデータ (構造かどうか) を表示するための優れたモジュールです。
于 2012-12-11T20:35:21.973 に答える