CGIをテストする。
Apache*1入れればいいんだろうけど、めんどい*2ので、作ってみた。http://localhost:12345/で試せる。ただし全部GET*3。あと、多分CGI.pm使ってないとダメ。
とりあえず、今作ってるのは、これで大丈夫だから、まぁいっか、とか。
#! /usr/bin/perl use strict; use warnings; my $script = $0 . ".cgi"; use Socket; my $port = 12345; socket( CLIENT_WAITING, PF_INET, SOCK_STREAM, 0 ) or die "socket :$!"; setsockopt( CLIENT_WAITING, SOL_SOCKET, SO_REUSEADDR, 1 ) or die "setsockopt :$!"; bind( CLIENT_WAITING, pack_sockaddr_in( $port, INADDR_ANY ) ) or die "bind :$!"; listen( CLIENT_WAITING, SOMAXCONN ) or die "listen :$!"; for(;;){ my $paddr = accept( CLIENT, CLIENT_WAITING ); select( CLIENT ); $|=1; my $request_line = <CLIENT>; my( $method, $query ) = ( $request_line =~ m|^(\w+)\s+[\w/\.\-\_]+\??([\w\.\-_=&%]*)\s+HTTP/\d+\.\d+| ); my @querys = ($query)? split( /&/, $query ) : (); open CGI, "./$script " . join( ' ', @querys ) . " |"; print "HTTP/1.1 200 OK\n"; print while <CGI>; close CGI; close CLIENT; } __END__
参考 : http://x68000.q-e-d.net/~68user/net/
参考*4 : http://ja.wikipedia.org/wiki/Common_Gateway_Interface