はじめてのplackup

何回か試したことがあるとは言え、
何か目的があって書くのは今回がはじめて。
WAFを使うのと平行して、Plack/PSGIを勉強しようと思う。

use strict;
use warnings;
use v5.10;

use Data::Dumper;

my $app = sub {
    my $env = shift;
    return [
        200,
        [ 'Content-Type' => 'text/plain' ],
        [ Dumper($env) ]
    ];
};

実行するにはこんな感じ。
$ plackup
HTTP::Server::PSGI: Accepting connections at http://0:5000/

ブラウザでアクセスすると、こんな感じ。
$VAR1 = {
'psgi.multiprocess' => '',
'SCRIPT_NAME' => '',
'SERVER_NAME' => 0,
'HTTP_ACCEPT_ENCODING' => 'gzip,deflate,sdch',
'HTTP_CONNECTION' => 'keep-alive',
'PATH_INFO' => '/',
'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'REQUEST_METHOD' => 'GET',
'psgi.multithread' => '',
'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36',
'QUERY_STRING' => '',
'REMOTE_PORT' => 56219,
'SERVER_PORT' => 5000,
'psgix.input.buffered' => 1,
'HTTP_ACCEPT_LANGUAGE' => 'ja,en-US;q=0.8,en;q=0.6',
'REMOTE_ADDR' => '127.0.0.1',
'SERVER_PROTOCOL' => 'HTTP/1.1',
'psgi.streaming' => 1,
'REQUEST_URI' => '/',
'psgi.errors' => *::STDERR,
'psgi.version' => [
1,
1
],
'psgi.nonblocking' => '',
'psgix.io' => bless( \*Symbol::GEN1, 'IO::Socket::INET' ),
'psgi.url_scheme' => 'http',
'psgi.run_once' => '',
'psgix.harakiri' => 1,
'HTTP_HOST' => '0.0.0.0:5000',
'psgi.input' => \*{'HTTP::Server::PSGI::$input'}
};

という訳で、はじめてのplackupでした。

おしまい。

Leave a Comment