□ アンケート(サンプル)のPerl・CGIソース □
#!/usr/local/bin/perl ← Perlのパスを指定
#・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
# 日本語変換ライブラリを読みこむ ← ライブラリを使ってみよう
#・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
require './jcode.pl';
#・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
# 入力処理(デコード) ← 送られたデータを受け取る場合
#・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); ← 入力がPOSTデータの場合
} else { $buffer = $ENV{'QUERY_STRING'}; } ← 入力がGETデータの場合
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
# 文字コード変換(euc or sjis) ← 文字コードを変換する
&jcode'convert(*value,'sjis');
# タグ処理
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\t//g;
$value =~ s/\r\n/\n/g;
$value =~ s/\r/\n/g;
$value =~ s/^\s+//;
$value =~ s/\s+$//;
$FORM{$name} .= (defined $FORM{$name}) ? "," . $value : $value; ← 同じ 「name」 のデータは 「,」 をつけてハッシュ変数にセットする
}
#・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
# 未入力の処理 ← ハッシュのループ処理
#・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
foreach ( keys %FORM ) {
if( $FORM{$_} eq '' ) { $FORM{$_} = '入力がありません'; }
}
if ( $FORM{'color'} eq '' ) { $FORM{'color'} = '入力がありません'; }
↑ チェックボックスでは、入力がない場合にはデータが送られずハッシュに入らない為、別処理で未入力処理を行なっています
#・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
# アンケート結果表示 ← 改行を含む文章の表示
#・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
print "Content-Type: text/html\n\n";
print <<END_HTML;
<html>
<head>
ミスティーネットPerl・CGI講座 − MISTY-NET −
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body>
<center>
<h3>-*=-*= アンケート(サンプル)の入力結果 -*=-*=</h3>
<table border="1">
<tr>
<td width="300">
あなたのお名前:</td>
<td width="200">
$FORM{'name'}</td></tr>
<tr>
<td>
あなたの年齢:</td>
<td>
$FORM{'age'}</td></tr>
<tr>
<td>
あなたの血液型:</td>
<td>
$FORM{'blood'}</td></tr>
<tr>
<td>
あなたの好きな色</td>
<td>
$FORM{'color'}</td></tr>
<tr>
<td>
ご希望のパスワード:</td>
<td>
$FORM{'pwd'}</td></tr>
<tr>
<td>
備考:</td>
<td>
$FORM{'message'}</td></tr>
</table>
</center>
</body>
</html>
END_HTML
exit;
--- ここまで ---