lib::byversion - add paths to @INC depending on which version of Perl is running.
version 0.002003
PERL5OPT="-Mlib::byversion='$HOME/Foo/Bar/%V/lib/...'"
or alternatively
use lib::byversion "/some/path/%V/lib/...";
So you have >1 Perl Installs. You have >1 Perl installs right? And you switch between running them how?
Let me guess, somewhere you have code that sets a different value for PERL5LIB
depending on what Perl you're using.
Oh you use perlbrew
?
This is a slightly different approach:
-
-
Set up your user-land PERL5LIB directories in a regular pattern differing only by
perl
version$HOME/Foo/Bar/5.16.0/lib/... $HOME/Foo/Bar/5.16.1/lib/... $HOME/Foo/Bar/5.16.2/lib/...
-
-
-
Set the following in your
%ENV
PERL5OPT="-Mlib::byversion='$HOME/Foo/Bar/%V/lib/...'"
-
-
- Done!
The right PERL5LIB gets loaded based on which
perl
you use.
Yes, yes, catch 22, lib::byversion
and its dependencies need to be in
your lib to start with.
O.k. That is a problem, slightly. But assuming you can get that in each
perl
install somehow, you can load each perl
's user library directories
magically with this module once its loaded.
And "assuming you can get that in each perl
install somehow" =~ with a bit
of luck, this feature or something like it might just be added to Perl itself,
as this is just a prototype idea to prove it works ( or as the case may be,
not ).
And even if that never happens, and you like this module, you can still
install this module into all your perl
's and keep a separate
user-PERL5LIB-per-perl
without having to use lots of scripts to hold it
together, and for System Perls, you may even be fortunate enough to get this
module shipped by your OS
of choice. Wouldn't that be dandy.
use lib::byversion $param
lib::byversion->import($param)
perl -Mlib::byversion=$param
etc.
lib::byversion
expects one parameter, a string path containing templated
variables for versions.
Current defined parameters include:
-
%V
This is an analogue of
$^V
except :- it should work on even
perl
s that didn't have$^V
, as it converts it from$]
with version.pm - it lacks the preceding
v
, because this is more usually what you want and its easier to template it in than take it out.
Example:
%V = 5.16.9
- it should work on even
-
%v
This is the same as
$]
on your Perl.Example:
%v = 5.016009
More may be slated at some future time, e.g.: to allow support for components
based on git
sha1
's, but I figured to upload something that works before
I bloat it out with features nobody will ever use.
Kent Fredric kentnl@cpan.org
This software is copyright (c) 2017 by Kent Fredric kentfredric@gmail.com.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.