App-Dispatch
view release on metacpan or search on metacpan
NAME
App::Dispatch - Tool to have #! dispatch to the best executable for the
job.
DESCRIPTION
App::Dispatch is an alternative to "/usr/bin/env". Unlike
"/usr/bin/env", it does not rely on your environment to tell it which
program to use. You can set system-wide, and user level configurations
for which program to use. You can also specify a cascade of aliases
and/or paths to search.
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 installation of the language. A result of this
is heavy use of "#!/usr/bin/env" to lookup the correct binary to execute
based on your $PATH. The problem with "/usr/bin/env" is that you may not
always have control over the environment. For example if you have a
script that you must run with sudo, your $PATH will be reset.
With App::Dispatch you can specify multiple locations to try when
looking for the program. You can also configure aliases at the system or
user level. This is useful when you have multiple versions of the
program installed and wish different things to use different ones by a
label. In this way the versions need not be in the same location on each
machine that can run the script.
SYNOPSYS
NO CONFIG
The following #! line will cause the script to be run by perl, it will
try each path listed in order.
#!/usr/local/bin/dispatch perl /path/to/perl /alternate/path/to/perl /another/perl
This tells the script to use the specified path if available, otherwise
fall back to whichever perl is in the environment.
#!/usr/local/bin/dispatch perl /path/to/perl ENV
You can also pass arguments to the program by putting them after "--":
#!/usr/local/bin/dispatch perl /path/to/perl ENV -- -w
WITH CONFIG
$HOME/.dispatch.conf:
[perl]
SYSTEM = /usr/bin/perl
DEFAULT = /opt/ACME/current/bin/perl
production = /opt/ACME/stable/bin/perl
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/*
( run in 0.650 second using v1.01-cache-2.11-cpan-39bf76dae61 )