#!/usr/local/bin/perl
#
# 辞書引きCGIプログラム (post使用)
# 検索サーバは使わず自力でファイルから検索する
#
&dicread;
$len = $ENV{'CONTENT_LENGTH'}; # POST要求文字列を環境変数から得る
print <<EOF; # ブラウザに返すHTMLのヘッダ生成
Content-type: text/html
<html>
<head>
<title>
英和辞書検索結果
</title>
</head>
<body bgcolor=#FFFFDD text=#000000 link=#0000EE vlink=#551A8B>
<dl>
EOF
for $i (1..$len){
$_ .= getc(STDIN);
}
while(/^(.*)%([0-9a-f][0-9a-f])(.*)/i){ # 検索文字列を取得
print "$_\n";
$_ = sprintf("%s%c%s",$1,hex($2),$3);
}
$s = $_;
/^word=(.*)$/;
$word = $1;
$min = 0;
$max = $#e;
$pat = "\L$word";
while ($max - $min > 1) { # 二分検索
$mid = int(($max + $min) / 2);
$_ = "\L$e[$mid]";
if ($_ lt $pat) {
$min = $mid;
}
else {
$max = $mid;
}
}
$n = 0;
for($i=$max;$i<=$#e;$i++){ # 検索結果をHTML型式で返す
last if $e[$i] !~ /,?^$pat/i;
print "<dt> <font size=+1 color=blue>$e[$i]</font>\n";
print "<dd> $j[$i]\n";
last if $n++ > 20;
}
print <<EOF; # HTMLのフッタを生成
</dl>
</body>
</html>
EOF
sub dicread { # #1と同じ