SYNOPSIS

        use Web::Detect qw(detect_web detect_web_fast);
        use IO::Interactive::Tiny ();
    
        if (Web::Detect::detect_web_fast()) {
            # do HTML
        }
        else {
            # do CLI
            if (IO::Interactive::Tiny::is_interactive()) {
                # prompt/ANSI/etc
            }
            else {
                # do not prompt/plain text/etc
            }
        }

DESCRIPTION

    Knowing if you are under a web environment or not is very handy.

    For example, often you need to decide whether to output HTML or
    plaintext.

FUNCTIONS

    Functions are exportable but are not exported by default.

 detect_web() => HASHREF

    Return false if not detected running under any web environment.

    Return a hash otherwise.

    These keys exists if it is detected that we are running under the given
    environment and the value is suitable as a boolean (always true).

    mod_perl

    plack

    pangea

    cpanel

      http://cpanel.net

    catalyst

    dancer

    mojo

    FCGI.pm

    IIS

    cgi

      General CGI

    general

      Value can be 1 if it was detected during the first general check, 2
      if it was detected during the second general check, and 3 if it was
      detected under both.

    Additionally, psgi is also true if we know its a PSGI environment.

 detect_web_fast()

    Same as detect_web() but return HASHREF upon first successful check
    instead of trying all heuristics.