NAME
    App::Dispatch - Tool to have #! dispatch to the best executable for the
    job.

DESCRIPTION
    Lately it has been a trend to avoid the system install of programming
    languages, Perl, Ruby, Python, etc, in most cases it is recommended that
    you do not use the system perl. A result of this is heavy use of
    "#!/usr/bin/env" to lookup the correct binary to execute based on your
    $PATH. Sometimes though you cannot control your environment as well as
    you would like. You cannot always be sure that the binary in $PATH is
    the one you want.

    App::Dispatch solves the same problem as "/usr/bin/env", but in a way
    that gives you more control. With App::Dispatch you put a configuration
    file in /etc (and optionally your home directory) which allows you
    provide aliases to specific binaries. In your #! line you specify which
    program, and a cascade of aliases to try. If the alias(es) you do not
    want are missing, or the program is missing altogether, it will result
    in an error.

    App::Dispatch also has 2 special aliases 'SYSTEM' which should be used
    to specify which binary is used by the system, and 'DEFAULT' which
    should be used when none is specified. In this way you can have system
    tools with a #! line that is very clear on which binary should run it.

SYNOPSYS
    This #! line will run perl, it will find the 'production' perl, if no
    production perl is found it will try 'DEFAULT'. Anything after the -- is
    passed as arguments to perl.

        #!/usr/local/bin/dispatch perl production DEFAULT -- -w

    This will run the default perl.

        #!/usr/local/bin/dispatch perl

CONFIG FILES
  LOCATIONS
    Locations are loaded in this order. All locations that exist are loaded.
    Later files can override earlier ones.

    /etc/dispatch.conf
        The system wide configuration

    /etc/dispatch/*
        System wide config dir, to have app specific config files for easier
        management with system packages.

    $HOME/.dispatch.conf
        User specific overrides or additions.

  EXAMPLE
        [perl]
            SYSTEM     = /usr/bin/perl
            DEFAULT    = /opt/ACME/current/bin/perl
            production = /opt/ACME/stable/bin/perl

        [gcc]
            SYSTEM  = /usr/bin/gcc
            DEFAULT = /usr/bin/gcc
            old     = /opt/legacy/bin/gcc

NOTE FOR CPAN AUTHORS
    This tool is very useful for perl shops in their own scripts. However it
    most likely should not be used in any scripts that will be installed
    with a cpan distribution. Distributions should use a normal #! line that
    will be rewritten by the build tools to use the perl for which the dist
    was installed. This is important because of dependency chains and XS
    modules.

AUTHORS
    Chad Granum exodist7@gmail.com

COPYRIGHT
    Copyright (C) 2013 Chad Granum

    App-Dispatch is free software; Standard perl licence.

    App-Dispatch is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for
    more details.

