CGIスクリプト (Perl)

#!/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と同じ