Perlのエラー(絞込検索時にファイルロックが。。。
こんにちは。よろしくお願いします。
Perlの担当者が休まれているため、急遽システムの修正~を行うことになったPerl初心者です。
Perlで作成されているシステム内の、「検索機能」の部分でエラーが出て困っています。
テキストボックスがあり、その中に文字をいれ、検索ボタンを押すと、あらかじめ登録を行っておいたデータのタイトル~にあたる部分との照らし合わせを行い、絞り込んで表示していく~ような検索機能です。
そのテキストボックスに「[」や「+」、「(」、「)」、「*」などを入力して実行させてしまうと、システムが動かなくなります。(エラー表示は無く、画面が真っ白に。
その後、そのシステムの設置フォルダと同じフォルダ内に「システムで設定した名前.txt.lock」というフォルダが作成されていて、それを削除しない限りはシステムが動きません。
原因としては、ファイルロックを行って、ファイルの中身を読み込んで、その最中に上記の検索~のための比較を行い、表示するものを格納して、ファイルロックを解除~。。。
の、比較~の部分かと思っています。
if($file[3]){
$file[3] =~ s/\ /KUGIRI_SPACE/g;
$file[3] =~ s/\ /KUGIRI_SPACE/g;
local @keyword = split(/KUGIRI_SPACE/, $file[3]);
foreach $keyword (@keyword){
@word = split(//, $keyword);
$search_keyword = shift @word;
foreach $word (@word){
if($word =~ /[^a-zA-Z0-9]/){
$search_keyword .= "\\$word";
}else{
$search_keyword .= "$word";
}
}
if($one_log[2] !~ /$search_keyword/i){
$Agreement = "NO";
}
}
}
if($Agreement eq "NO"){
undef $Agreement;
next;
}
こんな感じのソースなのですが、
「if($one_log[2] !~ /$search_keyword/i)」の部分で、比較を行っているのだと思いますが。。。
この先の原因究明~が分かりません。
ファイルのロックについてや上記ソースで気になる点など、何でもかまいませんので知恵をお貸し願えませんでしょうか??
補足
プログラムの流れとしては 1.フォームに入力し、送信 2.入力内容をファイルに格納 の2つになります。 WEB管理者が後に手動でファイルを確認するため、 作成ファイルには平文を格納したいので、 ファイル自体を暗号化し、パスワードの入力などで 閲覧を可能にしたいのですが、Cryptなどでファイル自体にも 暗号化をできるのでしょうか・・・