AND検索がうまくできない
登録したデータを検索するPerlを制作しています。
#$in{word}は入力されたキーワードで、半角スペースまたは全角スペースでキーワードを分割
@word = split(/\s| /,$in{word});
$count = @word;
#@dataは検索対象となるデータ
foreach $data (@data){
$a = 0;
while ($a < $count){
if($data =~ /$word[$a]/){
push(@query, $data);
last;
}
$a++;
}
}
こんな感じでAND検索できるようにしてみたのですが、エラーになります。
Perlチェックをかけてみると構文はOKと出ます
複数語、つまりAND検索でなく1つの言葉(@wordが1つだけ)の場合はうまくいきます
また、逆にif($data =~ /$word[$a]/){をなしにしてやれば(これをはずすと検索にならず全ヒットになりますが)複数ワードでも正しく表示されます
$aや$count、@word、$word[$a]などが正しくできていないのかと思い、それを表示させて確認してみましたが、きちんと代入され、やりとりできているようなのですが、どこに問題があるのでしょうか。
数日間ネットで調べ、色々試し、本も開いて色々検証しましたがどうしてもわかりません。
間違いをご指摘ください
PS プログラム部分の右へインデントしているところは半角スペースやタブだとこのページでは無視されるようなので、見やすくするため全角スペースでずらしていますが、実際のプログラム中ではここに全角スペースなんぞ使っておりません