#!/usr/local/bin/perl
#Main Program
#HTMLヘッダー部の出力
&output_header_html;
#FORMデータの読み取り
&read_form_data;
#HTMLフォーム部の出力
&output_form_html;
#HTMLデータ部の出力
&output_data_html;
#HTMLフッター部の出力
&output_futter_html;
#Sub Program
#HTMLヘッダー部の出力サブルーチン
sub output_header_html
{
print <<EOT;
Content-type: text/html
<HTML>
<HEAD>
<TITLE>Easy DataBase</TITLE>
</HEAD>
<BODY>
<br><br><br><br>
<H2>簡易データベース</H2>
<HR>
EOT
}
#FORMデータの読み取りサブルーチン
sub read_form_data{
read (STDIN, $form_str, $ENV{"CONTENT_LENGTH"});
# ENV:環境変数
# CONTENT_LENGTH:HTTPプロトコル情報の文字数
$form_str =~ tr/+/ /;
my @line = split (/&/, $form_str);
foreach $x(@line){
my ($index, $value) = split (/=/, $x);
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;
$value =~ s/</</g;
$value =~ s/>/>/g;
$form_data{$index} = $value;
}
}
#HTMLフォーム部の出力サブルーチン
sub output_form_html
{
print <<EOT;
<FORM METHOD="post" ACTION="easydb.cgi">
検索範囲<BR>
商品番号<INPUT TYPE="text" SIZE="10" NAME="start_num">〜
商品番号<INPUT TYPE="text" SIZE="10" NAME="end_num">まで<BR>
<INPUT TYPE="submit" VALUE="検索開始">
<INPUT TYPE="reset" VALUE="リセット">
</FORM>
EOT
}
# METHOD:情報を送る方法を post と指定
# ACTION:ボタンが押されたときのとび先 URL もOK
# INPUT:入力欄を作る
# TYPE="submit":送信
# VALUE:ボタンの中の文字
# TYPE="reset":入力欄のクリアー
#HTMLデータ部の出力サブルーチン
sub output_data_html
{
print <<EOT;
<HR>
検索結果
<BR><BR>
<TABLE BORDER='1'>
<TR>
<TD>
商品番号
</TD>
<TD>
商品名
</TD>
EOT
open (FH,"easydb.txt");
if ($form_data{'start_num'}>"1010" or
$form_data{'end_num'}>"1010"){
print ("商品番号が大きいです。商品番号は1010以下です\n");
}
else{
if ($form_data{'start_num'}<"1000" or
$form_data{'end_num'}<"1000"){
if ($form_data{'start_num'}!="" or $form_data{'end_num'}!=""){
print ("商品番号が小さいです。商品番号は1001以上です\n");
}}
else{
foreach (<FH>)
{
($key,$value) = split (/,/);
if ($key >= $form_data{'start_num'} and $key <= $form_data{'end_num'})
{
print ("<TR>\n");
print ("<TD>$key</TD>\n");
print ("<TD>$value</TD>\n");
print ("</TR>\n");
}
}
print ("</TABLE>\n");
print ('以上');
print ("\n");
print ("<HR>\n");
close (FH);
}}}
#HTMLフッター部の出力サブルーチン
sub output_futter_html
{
print ("<br><br><br><br>");
print ("</BODY>\n");
print ("</HTML>\n");
}
exit;