返信ありがとうございます。
複数検索の改造をすると、複数検索はできるのですが、部分一致にはなりません。
同じように改造していると思うのですが。
スクリプトを記載してみます。よろしくお願いいたします。
●入力フォーム
<select name="PREF" size="4" multiple>
<option value="all" selected>指定しない</option>
<option value="北海道">北海道</option>
<option value="青森県">青森県</option>
・
・
・
</select>
●search.cgi
#■入力
$FORM{'PREF'}='';
if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }
if ($buffer eq "") { &error('エラー','使い方が間違っています.'); }
@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
($name,$value) = split(/=/, $pair);
$name2 = $name;
$value2 = $value;
if($name eq 'PREF'){
$FORM2{$name} .= $value;
}
else{ $FORM2{$name} = $value;
}
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode'convert(*value,'euc');
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\n//g;
$value =~ s/\r//g;
$value =~ s/\t//g;
$value =~ s/\,//g;
#フォーム変数へ
if($name eq 'PREF'){
$FORM{$name} .= $value;
}
else{ $FORM{$name} = $value;
}
}
#■検索処理
if (!open(IN,"$file")) { &error('データベース読取エラー','復旧をお待ちください.'); }
@BASE = <IN>;
close(IN);
if ($FORM{'FF'} eq '') { $FF = 0; } else { $FF = $FORM{'FF'}; }
$TO = $FF + $page - 1;
if ($TO > $#BASE) { $TO = $#BASE; }
$hit = 0;
$next_num = '';
foreach $num ($FF .. $#BASE) {
$data = $data2 = $BASE[$num];
&jcode'convert(*data,'euc');
($DATE,$PREF,$NAME,$AGE) = split(/\,/,$data);
# 都道府県(一致)
if ($FORM{'PREF'} ne 'all') {
if ($FORM{'PREF'} =~ $PREF) { ; } else { next; }
}