10͂̃TvR[h
---------------------
ڎiy[Wԍj
P217
P222
P225-1
P225-2
P226
P230
P231
P233
---------------------

P217
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<!--
 ȒPȃAP[gHTML

 questionnaire.html
-->
<html>
  <head>
    <title>AP[g̗</title>
  </head>

  <body>
    <h1>AP[g̗</h1>

    <p>̎ɂB</p>

    <form action="/cgi-bin/questionnaire.cgi" method="post">
      <dl>
        <dt>O</dt>
        <dd><input type="text" name="name" value=""></dd>
        <dt>ł悭gɂȂĂ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="M"><br>
        <input type="reset" value="Zbg">
      </p>
    </form>

  </body>
</html>

P222
#!/usr/bin/perl
# ̍śAUNIXœ삳Ƃɂ͕K{B
# /usr/bin/perl͊ɂĂ/usr/local/binȂǂɂȂB
# CGIvOXNvǵAUNIXł͎s^ĂKv
# (chmod a+x questionnaire.cgi)B

# AP[gCGIvOXNvg
# [U[gĂOS̍v𒲂ׂ
#  questionnaire.cgi

# W[ǂݍ
use CGI;
$query = new CGI;

# vt@C݂̑̃`FbN
if (-f "data/statistic.log") {
  # ݂Ȃt@CI[vBsG[y[W\
  open(F, "data/statistic.log") ||
    &error("t@C data/statistic.log I[vł܂ ($!)B\n");
  while (<F>) {
    # s
    chomp( );
    # OOS擾
    ($name, $os) = split(/\t/);
    # z@nametotalɖO~
    push(@nametotal, $name);
    # nbV$ostotalɍvl~
    $ostotal{$os}++;
  }
  close(F);
}

# AP[g
# O^u菜(^ut@C̃f[^̋؂ƂĎgĂ邽)
$name = $query->param('name');
$name =~ s/\t//g;
# OɏdȂ
foreach (@nametotal) {
  if ($_ eq $name) {
    # ̂Ƃɂ̓G[y[W\
    &error("O $name ͂łɓo^Ă܂B\n");
  }
}

# ϐosɓĂOSL[ƂlCNg
$ostotal{$query->param('os')}++;

# L^ɒǉBsG[y[W\
open(F, ">>data/statistic.log") ||
  &error("t@C data/statistic.log ɏ߂܂ ($!)B\n");
print F $name, "\t", $query->param('os'), "\n";
close(F);

# \ (UNIXłEUC-JPƂ)
print $query->header(-charset=>'Shift_JIS'), 
  $query->start_html(-title=>"݂̃AP[g");
print "<h2>gpOS</h2>\n";
print "<ul>\n";
# v\
print "<li><strong>$os</strong>: $count</li>\n"
  while (($os, $count) = each (%ostotal));
print "</ul>\n";
print $query->end_html( );

sub error {
  # G[y[W\̃Tu[`
  my($message) = @_;

  print $query->header(-charset=>'Shift_JIS'), 
    $query->start_html(-title=>"G[");
  print "<h1>G[܂B</h1>\n";
  print $message;
  print $query->end_html( );
  # ُI
  exit(1);
}

P225-1
<dt>pr(ł)</dt>
<dd><ul>
<li><input type="checkbox" name="use" 
    value="C^[lbg">C^[lbg</li>
<li><input type="checkbox" name="use" 
    value="[v">[v</li>
<li><input type="checkbox" name="use" 
    value="\vZ">\vZ</li>
<li><input type="checkbox" name="use" 
    value="Q[">Q[</li>
<li><input type="checkbox" name="use" 
    value="vO~O">vO~O</li>
<li><input type="checkbox" name="use" 
    value="CG">CG</li>
<li><input type="checkbox" name="use" 
    value="y">y</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
# AP[gCGIvOXNvg(lΉ)
# [U[gĂOS̍v𒲂ׂ
#  questionnaire2.cgi

# W[ǂݍ
use CGI;
$query = new CGI;

# vt@C݂̑̃`FbN
if (-f "data/statistic2.log") {
  # ݂Ȃt@CI[vBsG[y[W\
  open(F, "data/statistic2.log") ||
    &error("t@C data/statistic2.log I[vł܂ ($!)B\n");
  while (<F>) {
    # s
    chomp( );
    # OOSApr擾
    ($name, $os, $use) = split(/\t/);
    # z@nametotalɖO~
    push(@nametotal, $name);
    # nbV$ostotalɍvl~
    $ostotal{$os}++;
    # nbV$usetotalɍvl~
    # ,ŋ؂Ă̂ŕ
    foreach (split(/,/, $use)) {
      $usetotal{$_}++;
    }
  }
  close(F);
}

# AP[g
# O^u菜(t@C̃f[^̋؂ɂĂ邽)
$name = $query->param('name');
$name =~ s/\t//g;
# OɏdȂ
foreach (@nametotal) {
  if ($_ eq $name) {
    # ̂Ƃ̓G[y[W\
    &error("O $name ͂łɓo^Ă܂B\n");
  }
}

# ϐosɓĂOSL[ƂlCNg
$ostotal{$query->param('os')}++;

# XguseɓĂprL[ƂlCNg
foreach ($query->param('use')) {
  $usetotal{$_}++;
}

# L^ɒǉBsG[y[W\
open(F, ">>data/statistic2.log") ||
  &error("t@C data/statistic2.log ɏ߂܂ ($!) B\n");
# Xguse,ŋ؂ɂď
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=>"݂̃AP[g");
print "<h2>gpOS</h2>\n";
print "<ul>\n";
# v\
print "<li><strong>$os</strong>: $count</li>\n"
  while (($os, $count) = each (%ostotal));
print "</ul>\n";

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

print $query->end_html( );

sub error {
  # G[y[W\̃Tu[`
  my($message) = @_;

  print $query->header(-charset=>'Shift_JIS'), 
    $query->start_html(-title=>"G[");
  print "<h1>G[܂B</h1>\n";
  print $message;
  print $query->end_html( );
  # ُI
  exit(1);
}

P230
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<!--
 t@C\HTML

 fileinfo.html
-->
<html>
  <head>
    <title>t@C\</title>
  </head>

  <body>
    <h1>t@C\</h1>

    <p>t@Cw肵āmMnĂB</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="M"><br>
        <input type="reset" value="Zbg">
      </p>
    </form>

  </body>
</html>

P231
#!/usr/bin/perl
# t@C\CGIvOXNvg
#  fileinfo.cgi

# W[ǂݍ
use CGI;
$query = new CGI;
$filename = $query->param('filename');

# \
print $query->header(-charset=>'Shift_JIS'), 
  $query->start_html(-title=>"t@C");

print "<h2>t@C</h2>\n";
print "<ul>\n";
# XJ[ϐƂĈƃt@CԂ
print "<li>t@C:", $filename, "</li>\n";
print "<li>t@CMIME^Cv:",
  $query->uploadInfo($filename)->{'Content-Type'} , 
  "</li>\n";
print "</ul>\n";

print "<h2>t@Ce</h2>\n";
print "<PRE>\n";
while (<$filename>) {
  # t@C̓e\
  print;
}
print "</PRE>\n";
print $query->end_html( );

P233
#!/usr/bin/perl
# uEU\CGIvOXNvg
#  browserinfo.cgi

# W[ǂݍ
use CGI;
$query = new CGI;

# \
print $query->header(-charset=>'Shift_JIS'), 
  $query->start_html(-title=>"uEU");
print "<dl>\n";
print "<dt><strong>gpuEU</strong></dt>\n";
print "<dd>", $query->user_agent( ), "</dd>\n";
print "<dt><strong>zXg</strong></dt>\n";
print "<dd>", $query->remote_host( ), "</dd>\n";
print "<dt><strong>Õy[W</strong></dt>\n";
print "<dd>", $query->referer( ), "</dd>\n";
print "</dl>\n";
print $query->end_html( );
