Switching perls

BooK on 2009-10-22T08:13:55

I have a few perls compiled and installed in /opt/perl:

$ ls /opt/perl
5.10.0  5.6.2  5.8.7  5.8.8

A long time ago, I tried to set up an environment that would setup the proper PATH to always reach the perl I wanted when typing perl on the command-line. That involved a shell script, which of course couldn't change the environment of the outer shell, so it actually started another shell, resulting in the following mess:

5271 pts/2    Ss     0:01 bash
6182 pts/2    S      0:00  \_ /bin/bash ./perlenv 5.10.0
6183 pts/2    S      0:00      \_ /bin/bash

I could also have moved a canonical symlink around, but this had the advantage that several independent shells could run different perls.

Anyway, that was unworkable until I realized I could change the current shell environment using aliases or shell functions. So, assuming my perl binaries live in /opt/perl/$VERSION/bin, the following bash shell function does the trick:

setperl ()
{
    export PATH=`echo $PATH|sed -e "s:/opt/perl/[^/]*/bin:/opt/perl/$1/bin:"`
}

And my ~/.bashrc points to the perl I want to use by default.