CPAN RT

In a CGI environment (like running under mod_cgi or mod_perl in Apache),
the HTTP headers aren't available on STDIN--instead they are in special environment variables.
So RPC::Any CGI servers get their input partly from the environment.
So the "input" to handle_input is just the RPC data,
and the HTTP headers are read from the environment.
(However,
you can still pass a CGI server an HTTP::Request object,
in which case it will ignore the environment.)

Also,
in a CGI environment,
you can't just print the HTTP/1.1 200 OK line at the top of the HTTP response,
you have to send a special header,
like Status: 200 OK.
So CGI servers return their output in that slightly different way.

All CGI servers are also HTTP servers,
so they have all the capabilities specified in RPC::Any::HTTP.
They just take their input and produce their output differently.