NAME
eachperl - a wrapper script for iterating multiple perl binaries
SYNOPSIS
$ eachperl exec -E 'say "Hello"'
--- perl5.30.0 ---
Hello
--- bleadperl ---
Hello
----------
perl5.30.0 : 0
bleadperl : 0
DESCRIPTION
This script iterates over a collection of multiple perl installations, allowing the same command to be invoked across each of them. The list of available perl binaries is given by a config file (see CONFIG). The main mode of operation is that each perl binary in turn is executed with supplied commandline arguments; though several other convenience commands are provided for common actions.
COMMANDS
list
Prints a list of each configured perl binary and the detected version.
All configured versions are printed; the selected versions are prefixed by an asterisk.
$ eachperl --since 5.31 list
perl5.30.0: /usr/bin/perl5.30.0 (v5.30.0)
* bleadperl: /home/user/bin/bleadperl (v5.32.0)
exec
The default command. Invokes each perl binary with the given arguments.
Afterwards a table of exit codes is printed, to summarize the run in case the output was long and scrolled away.
$ eachperl exec -E 'say $]'
--- perl5.30.0 ---
5.030000
--- bleadperl ---
5.032000
----------
perl5.30.0 : 0
bleadperl : 0
The word exec
is optional if the commandline otherwise begins with a hyphenated option name - which it usually does for short one-line scripts with -M
or -E
$ eachperl -E 'say 1+2'
$ eachperl -MConfig -E 'say $Config{nvsize}'
install
A convenient wrapper for installing a module using CPAN.
$ eachperl install A::CPAN::Module
When the module name is exactly .
the current working directory is installed instead. Rather than using CPAN
this is instead installed by directly invoking the build script.
This command implies the --no-system-perl
option.
test
A convenient wrapper for testing a module using CPAN.
$ eachperl test A::CPAN::Module
When the module name is exactly .
the current working directory is tested instead. Rather than using CPAN
this is instead tested by directly invoking the build script.
modversion
Prints the version of the named module.
$ eachperl modversion CPAN
--- perl5.30.0 ---
2.22
--- bleadperl ---
2.27
modpath
Prints the path to the named module.
$ eachperl modpath CPAN
--- perl5.30.0 ---
/usr/share/perl/5.30/CPAN.pm
--- bleadperl ---
/home/user/perl5/perlbrew/perls/bleadperl/lib/5.32.0/CPAN.pm
OPTIONS
--since VER
Selects only perl versions that are at least as new as the requested version. Any perl binaries older than this will be skipped.
--until VER
Selects only perl versions that are at least as old as the requested version. Any perl binaries newer than this will be skipped.
--no-system-perl
Deselects the system perl version. The perl version matching the system version (or rather, the version running this script) is skipped.
CONFIG
The list of available perls is given by a config file, which is found in the user's home directory at $HOME/.eachperlrc. This should be a file in INI format.
In addition, a file of the same name can be placed at the current working directory (presumably the root directory of a project) to override any settings in the main file.
The following keys are recognised
perls
A space-separated list of command names. Each should be searchable using $PATH
but need not be specified as a fully-qualified path.
perls = perl5.30.0 bleadperl
Default Commandline Options
Default values for the following commandline options can also be supplied:
since_version = 5.16
until_version = 5.30
AUTHOR
Paul Evans <leonerd@leonerd.org.uk>