10ϤΥץ륳
---------------------
ܼʥڡֹ
P217
P222
P225-1
P225-2
P226
P230
P231
P233
---------------------

P217
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<!--
 ñʥ󥱡ȤHTML

 questionnaire.html
-->
<html>
  <head>
    <title>󥱡Ȥ</title>
  </head>

  <body>
    <h1>󥱡Ȥ</h1>

    <p>μˤ</p>

    <form action="/cgi-bin/questionnaire.cgi" method="post">
      <dl>
        <dt>̾</dt>
        <dd><input type="text" name="name" value=""></dd>
        <dt>Ǥ褯ȤˤʤäƤOS</dt>
        <dd>
          <ul>
            <li><input type="radio" name="os" 
                value="Windows" 
                checked>Windows</li>
            <li><input type="radio" name="os" 
                value="Linux">Linux</li>
            <li><input type="radio" name="os" 
                value="FreeBSD">FreeBSD</li>
            <li><input type="radio" name="os" 
                value="Solaris">Solaris</li>
            <li><input type="radio" name="os" 
                value="MacOS">MacOS</li>
            <li><input type="radio" name="os" 
                value="Other">¾</li>
          </ul>
        </dd>
      </dl>
      <p>
        <input type="submit" name="send" value=""><br>
        <input type="reset" value="ꥻå">
      </p>
    </form>

  </body>
</html>

P222
#!/usr/bin/perl
# ιԤϡUNIXưȤˤɬܡ
# /usr/bin/perlϴĶˤäƤ/usr/local/binʤɤˤʤ롣
# CGIץॹץȤϡUNIXǤϼ¹Ը¤ͿƤɬפ
# (chmod a+x questionnaire.cgi)

# 󥱡ȽCGIץॹץ
# 桼ȤäƤOSιפĴ٤
#  questionnaire.cgi

# ⥸塼ɤ߹
use CGI;
$query = new CGI;

# ץե¸ߤΥå
if (-f "data/statistic.log") {
  # ¸ߤʤե򥪡ץ󤹤롣Ԥ饨顼ڡɽ
  open(F, "data/statistic.log") ||
    &error("ե data/statistic.log 򥪡ץǤޤ ($!)\n");
  while (<F>) {
    # ʸ
    chomp( );
    # ̾OS
    ($name, $os) = split(/\t/);
    # @nametotal̾
    push(@nametotal, $name);
    # ϥå$ostotal˹ͤ
    $ostotal{$os}++;
  }
  close(F);
}

# 󥱡Ȥ
# ̾饿ʸ(ʸեΥǡζڤȤƻȤäƤ뤿)
$name = $query->param('name');
$name =~ s/\t//g;
# ̾˽ʣʤ
foreach (@nametotal) {
  if ($_ eq $name) {
    # ΤäȤˤϥ顼ڡɽ
    &error("̾ $name ϤǤϿƤޤ\n");
  }
}

# ѿosäƤOS̾򥭡Ȥͤ򥤥󥯥
$ostotal{$query->param('os')}++;

# ϿɲáԤ饨顼ڡɽ
open(F, ">>data/statistic.log") ||
  &error("ե data/statistic.log ˽񤭹ޤ ($!)\n");
print F $name, "\t", $query->param('os'), "\n";
close(F);

# ɽ (UNIXǤEUC-JPȤ)
print $query->header(-charset=>'Shift_JIS'), 
  $query->start_html(-title=>"ߤΥ󥱡ȷ");
print "<h2>OS</h2>\n";
print "<ul>\n";
# ׿ɽ
print "<li><strong>$os</strong>: $count</li>\n"
  while (($os, $count) = each (%ostotal));
print "</ul>\n";
print $query->end_html( );

sub error {
  # 顼ڡɽΥ֥롼
  my($message) = @_;

  print $query->header(-charset=>'Shift_JIS'), 
    $query->start_html(-title=>"顼");
  print "<h1>顼ȯޤ</h1>\n";
  print $message;
  print $query->end_html( );
  # ۾ｪλ
  exit(1);
}

P225-1
<dt>(ĤǤ)</dt>
<dd><ul>
<li><input type="checkbox" name="use" 
    value="󥿡ͥå">󥿡ͥå</li>
<li><input type="checkbox" name="use" 
    value="ץ">ץ</li>
<li><input type="checkbox" name="use" 
    value="ɽ׻">ɽ׻</li>
<li><input type="checkbox" name="use" 
    value=""></li>
<li><input type="checkbox" name="use" 
    value="ץߥ">ץߥ</li>
<li><input type="checkbox" name="use" 
    value="CG">CG</li>
<li><input type="checkbox" name="use" 
    value=""></li>
<li><input type="checkbox" name="use" 
    value="¾">¾</li>
</ul>
</dd>

P225-2
<form action="/cgi-bin/questionnaire2.cgi" method="post">

P226
#!/usr/bin/perl
# 󥱡ȽCGIץॹץ(ʣб)
# 桼ȤäƤOSιפĴ٤
#  questionnaire2.cgi

# ⥸塼ɤ߹
use CGI;
$query = new CGI;

# ץե¸ߤΥå
if (-f "data/statistic2.log") {
  # ¸ߤʤե򥪡ץ󤹤롣Ԥ饨顼ڡɽ
  open(F, "data/statistic2.log") ||
    &error("ե data/statistic2.log 򥪡ץǤޤ ($!)\n");
  while (<F>) {
    # ʸ
    chomp( );
    # ̾OSӤ
    ($name, $os, $use) = split(/\t/);
    # @nametotal̾
    push(@nametotal, $name);
    # ϥå$ostotal˹ͤ
    $ostotal{$os}++;
    # ϥå$usetotal˹ͤ
    # ,ǶڤƤΤʬ
    foreach (split(/,/, $use)) {
      $usetotal{$_}++;
    }
  }
  close(F);
}

# 󥱡Ȥ
# ̾饿ʸ(եΥǡζڤˤƤ뤿)
$name = $query->param('name');
$name =~ s/\t//g;
# ̾˽ʣʤ
foreach (@nametotal) {
  if ($_ eq $name) {
    # ΤäȤϥ顼ڡɽ
    &error("̾ $name ϤǤϿƤޤ\n");
  }
}

# ѿosäƤOS̾򥭡Ȥͤ򥤥󥯥
$ostotal{$query->param('os')}++;

# ꥹuseäƤӤ򥭡Ȥͤ򥤥󥯥
foreach ($query->param('use')) {
  $usetotal{$_}++;
}

# ϿɲáԤ饨顼ڡɽ
open(F, ">>data/statistic2.log") ||
  &error("ե data/statistic2.log ˽񤭹ޤ ($!) \n");
# ꥹuse,Ƕڤäʸˤƽ񤭹
print F $name, "\t", $query->param('os'), "\t",
  join(",", $query->param('use')), "\n";
close(F);

# ɽ (UNIXǤEUC-JPȤ)
print $query->header(-charset=>'Shift_JIS'), 
  $query->start_html(-title=>"ߤΥ󥱡ȷ");
print "<h2>OS</h2>\n";
print "<ul>\n";
# ׿ɽ
print "<li><strong>$os</strong>: $count</li>\n"
  while (($os, $count) = each (%ostotal));
print "</ul>\n";

print "<h2></h2>\n";
# ׿ɽ
print "<li><strong>$use</strong>: $count</li>\n"
  while (($use, $count) = each (%usetotal));
print "</ul>\n";

print $query->end_html( );

sub error {
  # 顼ڡɽΥ֥롼
  my($message) = @_;

  print $query->header(-charset=>'Shift_JIS'), 
    $query->start_html(-title=>"顼");
  print "<h1>顼ȯޤ</h1>\n";
  print $message;
  print $query->end_html( );
  # ۾ｪλ
  exit(1);
}

P230
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<!--
 եɽHTML

 fileinfo.html
-->
<html>
  <head>
    <title>եɽ</title>
  </head>

  <body>
    <h1>եɽ</h1>

    <p>եꤷơϤ򲡤Ƥ</p>

    <form action="/cgi-bin/fileinfo.cgi" method="post" 
        enctype="multipart/form-data">
      <p><input type="file" name="filename"></p>
      <p>
        <input type="submit" name="send" value=""><br>
        <input type="reset" value="ꥻå">
      </p>
    </form>

  </body>
</html>

P231
#!/usr/bin/perl
# եɽCGIץॹץ
#  fileinfo.cgi

# ⥸塼ɤ߹
use CGI;
$query = new CGI;
$filename = $query->param('filename');

# ɽ
print $query->header(-charset=>'Shift_JIS'), 
  $query->start_html(-title=>"ե");

print "<h2>ե</h2>\n";
print "<ul>\n";
# 顼ѿȤưȥե֤̾
print "<li>ե̾:", $filename, "</li>\n";
print "<li>եMIME:",
  $query->uploadInfo($filename)->{'Content-Type'} , 
  "</li>\n";
print "</ul>\n";

print "<h2>ե</h2>\n";
print "<PRE>\n";
while (<$filename>) {
  # եƤɽ
  print;
}
print "</PRE>\n";
print $query->end_html( );

P233
#!/usr/bin/perl
# ֥饦ɽCGIץॹץ
#  browserinfo.cgi

# ⥸塼ɤ߹
use CGI;
$query = new CGI;

# ɽ
print $query->header(-charset=>'Shift_JIS'), 
  $query->start_html(-title=>"֥饦");
print "<dl>\n";
print "<dt><strong>ѥ֥饦</strong></dt>\n";
print "<dd>", $query->user_agent( ), "</dd>\n";
print "<dt><strong>ۥ</strong></dt>\n";
print "<dd>", $query->remote_host( ), "</dd>\n";
print "<dt><strong>Υڡ</strong></dt>\n";
print "<dd>", $query->referer( ), "</dd>\n";
print "</dl>\n";
print $query->end_html( );
