[Tokyo.pm] Re: httpd control (Long)

Yasuo Matsumoto yasuo.matsumoto @ jalinfotec.co.jp
2000年 10月 3日 (火) 23:55:45 CDT


松本です。
Perl Multi Control(中身はただの httpd)のCGI版をつくりました。
GETの場合の値渡しは ENVを使ってやるんでしょうか。
forkとか必要なんでしょうか?
signalとかで割り込むことができるんでしょうかね。


-------------------------------------------------
use HTTP::Daemon;
use HTTP::Status;
use FindBin qw($Bin);
my $DOC_ROOT = $Bin;
my $PERL = "perl";
sub dmsg
{
  print STDERR scalar localtime,": @_\n";
}

my $d = new HTTP::Daemon LocalPort => 80;
print "Please contact me at: <URL:", $d->url, ">\n";
while (my $c = $d->accept) {
   while (my $r = $c->get_request){
      $method = $r->method;
      if ($method eq 'GET'){
         my $file = $r->url->path;
         dmsg $file;
         if ($file =~ m|\/$| ){

            $file = $file."index.html";
         }
         if ($file =~ m|.cgi$|) {
            my $res = `$PERL $DOC_ROOT$file`;
            $c->send_basic_header();
            $c->send_response();
            $c->send($res);
         }
         else{
            $c->send_file_response("$DOC_ROOT$file");
         }
      }
      elsif ($method eq 'POST'){
         #
         #
         #
         $c->send_error(RC_FORBIDDEN);
      }
      else{
         $c->send_error(RC_FORBIDDEN);
      }
   }
   $c->close;
   undef($c);
}




Tokyo-pm メーリングリストの案内