よく分からないまま、とにかくCPANからinstallしてみた。
とりあえずHTTP::Engine - モダンなPerl入門 - モダンなPerl入門を参考に、何か書いてみる。
#!/usr/bin/perl use strict; use warnings; use HTTP::Engine; HTTP::Engine->new( interface => { module => 'ServerSimple', args => { host => 'localhost', port => 1982, }, request_handler => sub { my $req = shift; return HTTP::Engine::Response->new( status => 200, body => 'Hello World!', ); }, }, )->run;
で、ブラウザから"http://localhost:1982/"にアクセス。
おぉ、"Hello World!"が表示された!
request_handlerでリクエストを受け取っているようだ。
ちょっと書き換えてみる。
#!/usr/bin/perl use strict; use warnings; use HTTP::Engine; use Data::Dumper; HTTP::Engine->new( interface => { module => 'ServerSimple', args => { host => 'localhost', port => 1982, }, request_handler => sub { my $req = shift; my $body = "<html><body><pre>\n"; $body .= Dumper($req); $body .= "</pre></body></html>\n"; return HTTP::Engine::Response->new( status => 200, body => $body, ); }, }, )->run;
とやってみると、結果は
$VAR1 = bless( {
'_connection' => {
'input_handle' => \*Symbol::GEN10,
'env' => {},
'output_handle' => \*Symbol::GEN10
},
'headers' => bless( {
'user-agent' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; ja-jp) AppleWebKit/525.26.2 (KHTML, like Gecko) Version/3.2 Safari/525.26.12',
'connection' => 'keep-alive',
'accept' => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
'accept-language' => 'ja-jp',
'accept-encoding' => 'gzip, deflate',
'host' => 'localhost:1982'
}, 'HTTP::Headers' ),
'connection_info' => {
'protocol' => 'HTTP/1.1',
'request_uri' => '/',
'user' => undef,
'address' => '127.0.0.1',
'method' => 'GET',
'port' => 1982,
'_https_info' => undef
},
'request_builder' => bless( {
'chunk_size' => 4096
}, 'HTTP::Engine::RequestBuilder::NoEnv' ),
'uri' => bless( [
bless( do{\(my $o = 'http://localhost:1982/')}, 'URI::http' ),
'http://localhost:1982/'
], 'URI::WithBase' )
}, 'HTTP::Engine::Request' );おぉ、headerとかconnection_infoが取り出せる!