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";
}