/ / Ho bisogno della directory Perl bin nel PATH per eseguire programmi perl (su Windows)? - windows, perl, strawberry-perl, variabili di percorso

Ho bisogno della directory Perl bin nel PATH per eseguire programmi perl (su Windows)? - windows, perl, strawberry-perl, variabili di percorso

Tradizionalmente, vorrei solo C:perlbin nella mia variabile PATH, ma a causa di conflitti di versione mi piacerebbe mantenere diverse versioni di perl nelle posizioni C:Perl-versionXYbin e basta eseguire i miei script Perl invocando direttamente C:Perl-...binperl.exe theScript.pl.

Questo in realtà deve essere eseguito sotto un sistema automatizzato, dove noi già invocare direttamente C:perlbinperl.exe per tutti gli script perl. (Ma C:perlbin è anche nel PERCORSO.)

Per facilitare le diverse versioni di Perl fianco a fianco, mi piacerebbe rimuovere C-perl-bin dal PERCORSO per essere sicuri di non vedere mai gli effetti collaterali da qualsiasi impostazione PATH relativa al Perl.

Questo dovrebbe funzionare? Che dire dei moduli che richiedono file DLL aggiuntivi (come LibXML, che richiede LibXML.dll nella directory bin di perl) ??

Userò il portatile Strawberry Perl per le versioni affiancate. (Il file readme menziona alcune impostazioni PATH, ma non menziona quale è usato per cosa.)

risposte:

1 per risposta № 1

A condizione che tutte le DLL siano nella stessa posizionedirectory come eseguibile, dovrebbe funzionare normalmente. Se nel percorso è presente solo una voce per Perl, le DLL devono trovarsi nella stessa directory dell'eseguibile (oppure vengono trovate utilizzando una logica esplicita), quindi è necessario essere a posto. Quando un eseguibile carica una DLL, il primo posto cercato è la directory contenente l'eseguibile.

Se si incontrano problemi, una opzione sarebbeper creare un file di comando per ogni versione. Potresti dare questi nomi diversi, come perl58.cmd, perl514.cmd, ecc., Metterli tutti in un'unica directory e mettere quella directory sul percorso. In ogni file di comando, aggiungere la directory Perl corrispondente al percorso e quindi avviare Perl con gli argomenti della riga di comando:

setlocal
PATH=c:perl58bin;%PATH%
perl %*

Nota l'uso del setlocal comando in modo che la modifica al percorso non venga esportata nella finestra della riga di comando da cui viene eseguito il file di comando.


0 per risposta № 2

Vorrei avvertire che se non hai il Perldirectory bin sul PATH, e tutto ciò che viene eseguito tenta di richiamare il programma che vive nella directory bin senza fornire un percorso esplicito (cattiva pratica, ma ciò non impedisce che accada), quindi si ottiene un errore e, a seconda di come il fallimento è gestito, potrebbe manifestarsi in problemi che sono sottili e difficili da debugare.

Quindi dico, a meno che tu non abbia una ragione molto convincente per non aggiungerlo (ad esempio, politica IT che rende proibitivo e fastidioso aggiungere a PATH), quindi aggiungilo.