# man > HTTP::Server::Simple::CGI

## NAME
    [HTTP::Server::Simple::CGI](https://www.chedong.com/phpMan.php/perldoc/HTTP%3A%3AServer%3A%3ASimple%3A%3ACGI/markdown) - CGI.pm-style version of [HTTP::Server::Simple](https://www.chedong.com/phpMan.php/perldoc/HTTP%3A%3AServer%3A%3ASimple/markdown)

## DESCRIPTION
    [HTTP::Server::Simple](https://www.chedong.com/phpMan.php/perldoc/HTTP%3A%3AServer%3A%3ASimple/markdown) was already simple, but some smart-ass pointed out that there is no CGI in
    HTTP, and so this module was born to isolate the CGI.pm-related parts of this handler.

  accept_hook
    The accept_hook in this sub-class clears the environment to the start-up state.

  post_setup_hook
    Initializes the global CGI object, as well as other environment settings.

  cgi_class [Classname]
    Gets or sets the class to use for creating the $cgi object passed to "handle_request".

    Called with a single argument, it sets the coderef. Called with no arguments, it returns this
    field's current value.

    To provide an initialization subroutine to be run in the post_setup_hook, see "cgi_init".

    e.g.

        $server->cgi_class('CGI');

        $server->cgi_init(sub {
            require CGI;
            [CGI::initialize_globals](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3Ainitializeglobals/markdown)();
        });

    or, if you want to use [CGI::Simple](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASimple/markdown),

        $server->cgi_class('[CGI::Simple](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASimple/markdown)');
        $server->cgi_init(sub {
            require [CGI::Simple](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASimple/markdown);
        });

  cgi_init [CODEREF]
    A coderef to run in the post_setup_hook.

    Called with a single argument, it sets the coderef. Called with no arguments, it returns this
    field's current value.

  setup
    This method sets up CGI environment variables based on various meta-headers, like the protocol,
    remote host name, request path, etc.

    See the docs in [HTTP::Server::Simple](https://www.chedong.com/phpMan.php/perldoc/HTTP%3A%3AServer%3A%3ASimple/markdown) for more detail.

  handle_request CGI
    This routine is called whenever your server gets a request it can handle.

    It's called with a CGI object that's been pre-initialized. You want to override this method in
    your subclass

  handler
    Handler implemented as part of [HTTP::Server::Simple](https://www.chedong.com/phpMan.php/perldoc/HTTP%3A%3AServer%3A%3ASimple/markdown) API

