□ アンケート(サンプル)の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/</&lt;/g;
   $value =~ s/>/&gt;/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;

--- ここまで ---