If you're not using perlbrew to manage your Perl installations, you're missing out. You can leave the moldy old system Perl 5 as is and use a supported and modern version of Perl 5 for your current applications. You can even use separate installations for separate applications.
The only drawback I've ever had with perlbrew
is that upgrading
my main development version of Perl 5 in place (from 5.14.0 to 5.14.1 to
5.14.2) required the reinstallation of a few hundred CPAN distributions. That
shouldn't be an onerous task, but it is for two reasons:
- I don't have a canonical list of every dependency in every active project in a single place; I've had to make every project reinstall its dependencies, which is busywork
- It's unnecessary, as minor releases of Perl 5 compiled with the same characteristics (64-bit, non-threaded in my case) are binary compatible with each other, so XS components are compatible
I've noticed that binary distributions of Perl 5 tend to share @INC
directories between versions, so why not perlbrew
?
As it turns out, this is a compilation option to Perl 5 itself. The -D
otherlibdirs
option adds a directory to @INC
as included
within the perl
binary itself. perlbrew
allows you to
pass -D
options, so my invocation looked like:
perlbrew install -j 9 perl-5.14.2
-D otherlibdirs="$PERLBREW_ROOT/perls/perl-5.14.1/lib/site_perl/5.14.1"
The -j 9
option performs a parallel build and test.
Sharing the site_perl directories between 5.14.1 and 5.14.2 saved me a lot of time, but I did notice one caveat: any distribution which installs helper programs (, Pod::PseudoPod::Book) doesn't automatically make those helper programs available. I had to fix that by installing those distributions by hand. That was the work of seconds, not hours, so it's still an improvement.
Again, this trick only works if the new build has the same binary characteristics as the old build. If you're using the same build options on the same machine for a Perl 5 in the same major version family, you should be fine.
If perlbrew had builtin support for this it could append the compatible version's bin/ to $PATH as well as passing -Dotherlibdirs to Configure.