enquete.cgi 全コード
#!/usr/local/bin/perl
require "./cgi-lib.pl"; # cgi-lib.plライブラリ使用宣言
require "./jcode.pl"; # jcode.plライブラリ使用宣言
&ReadParse(%in); # サブルーチンReadParseを呼び出して連想配列%inに格納
foreach (%in) { # 連想配列%inの要素の数だけ繰り返し
&jcode'convert(\$_, "sjis"); # 文字コードをsjisに変換
s/[\n\r]//g; # 改行文字「\n」とリターン「\r」を除去
s/,/、/g; # 「,」と「、」を置換
}
# enq.csvファイルをファイルハンドルDATAで開く。失敗したらエラーメッセージを出して停止
open(DATA, "+<enq.csv") || die "File 'enq.csv' Open Error.";
# ファイルロック
# flock(DATA, 2);
seek (DATA, 0, 2); # ファイルハンドルDATAの末尾にファイルポインタを移動
$,=","; # プリント文の区切り文字を「,」に
print DATA %in,"\n"; # DATAに連想配列%inを書き出し
seek (DATA, 0, 0); # ファイルハンドルDATAの先頭にファイルポインタを移動
@txt=<DATA>; # ファイルの内容を配列@txtに格納
# ファイルロック解除
# flock(DATA, 8);
close(DATA); # ファイルクローズ
&header; # HTMLヘッダー
print "<table border=\"1\">\n"; # <table>タグ出力
foreach (@txt) { # 配列@txtの要素だけ繰り返し
@array=split(',',$_); # 配列@txtの要素(ファイルの一行)を「,」で区切って配列@arrayに格納
print "<tr>\n"; # <tr>タグ出力
foreach $item (@array) { # 配列@arrayの要素だけ繰り返し
print "<td>$item</td>\n"; # データの各項目を<td>タグをつけて出力
}
print "</tr>\n"; # <tr>終了タグ出力
}
print "</table>\n"; # <table>終了タグ出力
&footer; # HTMLフッター
# HTML ヘッダー
sub header {
print "Content-type: text/html\n\n";
print <<"EOM";
<html>
<head>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
</head>
<body>
EOM
}
# HTML フッター
sub footer {
print "</body>\n</html>\n";
}