9 use HTTP::Request::AsCGI;
13 $SIG{'PIPE'} = 'IGNORE';
15 my $server = HTTP::Daemon->new( LocalPort => 3000, ReuseAddr => 1 )
16 or die( "Can't create daemon: $!" );
18 print "Please contact me at: <URL:", $server->url, ">\n";
20 while ( my $client = $server->accept ) {
23 REMOTE_ADDR => $client->peerhost,
24 REMOTE_HOST => $client->peerhost,
25 REMOTE_PORT => $client->peerport
28 while ( my $request = $client->get_request ) {
30 unless ( $request->uri->host ) {
31 $request->uri( URI->new_abs( $request->uri, $server->url ) );
34 my $c = HTTP::Request::AsCGI->new( $request, %e )->setup;
37 print $q->header( -charset => 'UTF-8' ),
39 -title => 'Hello World',
42 $q->h1('Hello World'),
46 $q->td( [ 'Name', $q->textfield( -name => 'name' ) ] ),
47 $q->td( [ 'Email', $q->textfield( -name => 'email' ) ] ),
48 $q->td( [ 'Phone', $q->textfield( -name => 'phone' ) ] ),
49 $q->td( [ 'File', $q->filefield( -name => 'file' ) ] )
59 map{ $q->td( [ $_, $ENV{$_} ] ) } sort keys %ENV
64 my $response = $c->restore->response;
66 # tell client to close socket to prevent blocking problems
67 # in this single threaded daemon.
68 $response->header( Connection => 'close' );
70 $client->send_response($response);