NAME
Plack::Handler::CLI - Command line interface to PSGI applications
VERSION
This document describes Plack::Handler::CLI version 0.05.
SYNOPSIS
#!perl -w
# a cat(1) implementation on PSGI/CLI
use
strict;
use
Plack::Handler::CLI;
sub
err {
my
(
@msg
) =
@_
;
return
[
500,
[
'Content-Type'
=>
'text/plain'
],
\
@msg
,
];
}
sub
main {
my
(
$env
) =
@_
;
my
@files
=
split
'/'
,
$env
->{PATH_INFO};
local
$/;
my
@contents
;
if
(
@files
) {
foreach
my
$file
(
@files
) {
my
$f
= uri_unescape(
$file
);
open
my
$fh
,
'<'
,
$f
or
return
err(
"Cannot open '$f': $!\n"
);
push
@contents
,
readline
(
$fh
);
}
}
else
{
push
@contents
,
readline
(
$env
->{
'psgi.input'
});
}
return
[
200,
[
'Content-Type'
=>
'text/plain'
],
\
@contents
,
];
}
my
$handler
= Plack::Handler::CLI->new(
need_headers
=> 0);
$handler
->run(\
&main
);
DESCRIPTION
Plack::Handler::CLI is a PSGI handler which provides a command line interface for PSGI applications.
INTERFACE
Plack::Handler::CLI->new(%options)
Creates a Plack handler that implements a command line interface.
PSGI headers will be printed by default, but you can suppress them by need_headers => 0
.
$cli->run(\&psgi_app, @argv) : Void
Runs &psgi_app with @argv.
"--key" => "value"
(or "--key=value"
) pairs in @argv are packed into QUERY_STRING
, while any other arguments are packed into PATH_INFO
, so &psgi_app can get command line arguments as PSGI parameters. The first element of @argv after the query parameters could also be a absolute URL.
DEPENDENCIES
Perl 5.8.1 or later.
BUGS
All complex software has bugs lurking in it, and this module is no exception. If you find a bug please either email me, or add the bug to cpan-RT.
SEE ALSO
AUTHOR
Goro Fuji (gfx) <gfuji(at)cpan.org>
LICENSE AND COPYRIGHT
Copyright (c) 2011, Goro Fuji (gfx). All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic for details.