2010-11-23 6 views
4

est possible d'utiliser la version différente de Perl sans utiliser le SET ou la manipulation de la variable d'environnement « PATH »la gestion des versions de Perl dans Windows

je besoin d'un mécanisme qui me permet de travailler avec la version différente de Perl pour script différent sans affecter la configuration du système. (par exemple, je suis en utilisant Perl ver 5.6.1 pour certains scripts et Perl 5.8.8 pour d'autres scripts Perl)

Répondre

2

C'est un vieux truc que je fais quand j'ai deux différents, mais très versions incompatibles de Perl je dois utiliser: Utiliser différents suffixes:

Par exemple, je ClearQuest sur mon système et doit utiliser cqperl (qui est la version de Perl de ClearQuest) pour exécuter des scripts qui manipulent les problèmes dans ClearQuest. Pourtant, si je dois manipuler des données SQL à partir de notre base de données, je dois utiliser mon ActivePerl parce que je ne peux pas ajouter dans le module DBI en cqperl. Ce que j'ai fait a été d'associer le suffixe *.pl à ActivePerl et le suffixe *.cqpl à cqperl. Maintenant, quand j'exécute un script, et qu'il se termine par *.cqpl, il utilise une version de Perl tandis qu'un script qui se termine par *.pl est exécuté par une autre version de Perl.

Pour associer un suffixe à un programme, allez dans une fenêtre de l'Explorateur Windows et sélectionnez Options des dossiers des menu Outils. Ensuite, cliquez sur l'onglet Types de fichiers. Cliquez sur le bouton Nouveau et créez une nouvelle extension à associer au fichier. Ensuite, sélectionnez-le dans la fenêtre Types de fichiers enregistrés et cliquez sur le bouton Avancé en bas.

Créez une action Open et associez-la au nom de chemin d'accès complet du Perl que vous souhaitez exécuter ce suffixe. Comme ceci:

"C:\Perl\bin\perl.exe" "%1" %* 

Le %* est important, de sorte que vous pouvez passer d'autres paramètres à votre programme. Dans votre cas, vous pouvez utiliser *.pl pour Perl 5.8.8 et *.pl6 pour Perl 5.6.

Vous n'avez même pas besoin de mettre le répertoire bin de Perl dans votre chemin. Il suffit de taper le nom de votre script et c'est tout.

+0

Cela ne va-t-il pas affecter l'inclusion de la bibliothèque Perl? – hemanth

+0

@hemanth, le chemin de recherche de la bibliothèque Perl est compilé dans l'exécutable perl (bien qu'il puisse être relatif à l'emplacement de perl.exe). (Sauf pour les répertoires que vous ajoutez en utilisant les variables d'environnement PERL5LIB ou PERLLIB.) – cjm

+0

Je pense que l'inverse peut également être fait. Au lieu de renommer les scripts Perl, je peux renommer perl.exe en XXXperl.exe et appeler XXXperl.exe – hemanth

1

vous pouvez toujours exécuter vos scripts en utilisant l'interpréteur perl de votre choix, supposons que vous avez deux différents perls installés dans с:/perl_56 et c:/perl_58.

à CMD.exe vous pouvez essayer ceci:
c: /perl_56/bin/perl.exe path_to_your_script ici
et
c: /perl_58/bin/perl.exe path_to_your_script ici

pour exécuter des scripts via différentes versions de perl. Malheureusement, vous ne pouvez pas utiliser le "shebang" au début de vos scripts dans Windows comme vous le feriez sur les systèmes Unix.

+0

Malheureusement, je ne connaîtrais pas le chemin de mon exécutable Perl au moment de l'exécution. En d'autres termes, je ne peux pas coder en dur le chemin de l'exécutable Perl. – hemanth

+0

Eh bien, il me semble alors que votre seule option pour être sûr à 100%, que vos scripts s'exécuteront sur le système cible est de les compiler en fichier .exe en utilisant la version correcte de perl (de cette façon perl comprend lui-même et tous les bibliothèques/modules dans l'archive, qui est ensuite automatiquement extrait vers temp dir sur la machine cible, de cette façon vous pourrez exécuter vos scripts n'importe où, où perl n'est même pas installé), comme expliqué ici: http://stackoverflow.com/questions/1237286/how-can-i-compile-mon-perl-script-so-it-can-be-execute-on-systems-without-perl-in –

2

Sous Unix: utilisez la ligne shebang.

Sous Windows: lorsque perl est installé, il créait généralement deux exécutables: perl.exe et perl5.N.M.exe. Par ex. Dans mon installation Strawberry, j'ai perl.exe et perl5.10.1.exe. Donc, si les deux perls sont dans PATH, vous pouvez les appeler comme perl5.6.1 et 5.8.8. I.e "perl5.6.1 programme.pl".

P.S. Je suggère de mettre à niveau l'environnement entier à 5.12.2 - Perl a beaucoup de nouvelles fonctionnalités utiles.

Questions connexes