Pour le développement, j'ai installer mon propre Perl et de laisser le système de Perl seul. Si je veux mettre à jour le système de Perl, j'utilise le système du gestionnaire de package. Pour mon développement en Perl, j'utilise le cpan outil.
Depuis que j'ai garder des personnes distinctes, il ne faut jamais gâcher le Perl que le système a besoin pour ses tâches d'entretien et ainsi de suite, mais je n'ai pas compter sur le système de décisions pour le développement.
Il est très facile à installer séparé Perls. Lorsque vous exécutez le Configurer à partir de la distribution de la source, il va vous demander où vous voulez installer le tout. Donner n'importe quel chemin que vous le souhaitez. J'ai beaucoup de Perls installé dans /usr/local/perls, par exemple, et tout pour chaque installation vit séparément. J'ai ensuite faire des liens symboliques dans /usr/local/bin pour eux (par exemple, perl5.8.9, perl.5.10.0, perl5.10.0-thread). Quand je veux une version particulière, je viens d'utiliser celui que je veux:
$ perl5.10.0 program.pl
Le binaire particulier s'assure que le programme choisit le droit du module de chemin de recherche et ainsi de suite (c'est la même chose dans la Config.module pm pour que le binaire).
Voici un script que j'utilise pour créer les liens symboliques. Il se regarde dans le répertoire bin, les chiffres de la version en Perl, et établit des liens comme cpan5.10.1
et ainsi de suite. Chaque programme connaît déjà le droit de perl à l'appel:
#!perl
use 5.010;
use strict;
use warnings;
use File::Basename;
use File::Spec::Functions;
my $perls_directory = catfile(
$ARGV[0] // '/usr/local/perls',
'perl*'
);
die "$perls_directory does not exist!\n"
unless -d dirname $perls_directory;
my $links_directory = $ARGV[1] // catfile( $ENV{HOME}, 'bin' ); #/
die "$links_directory does not exist!\n" unless -d $links_directory;
foreach my $directory ( glob( $perls_directory ) )
{
say "Processing $directory...";
unless( -e catfile( $directory, 'bin' ) )
{
say "\tNo bin/ directory. Skipping!";
next;
}
my @perls = glob( catfile( $directory, qw( bin perl5* ) ) );
my( $perl_version ) = $perls[0] =~ m/(5\.\d+\.\d+)\z/;
say "\tperl version is $perl_version";
foreach my $bin ( glob( catfile( $directory, 'bin', '*' ) ) )
{
say "\tFound $bin";
my $basename = basename( $bin );
my $link_basename = do {
if( $basename =~ m/5\.\d+\.\d+\z/) { $basename }
else { "$basename$perl_version" }
};
my $link = catfile( $links_directory, $link_basename );
next if -e $link;
say "\t\tlinking $bin => $link";
symlink $bin => $link or
warn "\t\tCould not create symlink [$!]: $bin => $link!";
}
}
Tout se installer dans le bon endroit pour Perl.
J'ai aussi pensé que je devrais mettre ces Perl répertoires sous une certaine forme de contrôle de code source. Si j'ajoute un module que je n'aime pas, j'ai juste de retour d'une révision antérieure. Je suis le seul à commencer à le faire bien et n'ai pas joué à beaucoup.
J'ai écrit plus sur ce genre de chose dans l'efficacité de l'Perler blog: