/ / ¿Necesito el directorio bin de Perl en la RUTA para ejecutar programas perl (en Windows)? - windows, perl, strawberry-perl, path-variables

¿Necesito el directorio Perl bin en la RUTA para ejecutar programas perl (en Windows)? - windows, perl, strawberry-perl, path-variables

Tradicionalmente, solo tendría C:perlbin en mi variable PATH, pero debido a conflictos de versión me gustaría mantener diferentes versiones de Perl en ubicaciones C:Perl-versionXYbin y simplemente ejecute mis scripts de Perl invocando directamente C:Perl-...binperl.exe theScript.pl.

En realidad, esto se debe ejecutar bajo un sistema automatizado, donde nosotros ya invocar directamente C:perlbinperl.exe para todos los scripts de perl. (Pero C:perlbin es además en el camino.)

Para facilitar las diferentes versiones de Perl lado a lado, me gustaría eliminar C-perl-bin del PATH para asegurarnos de que nunca veamos efectos secundarios de ninguna configuración PATH relacionada con Perl.

¿Se supone que esto funciona? ¿Qué sucede con los módulos que requieren archivos DLL adicionales (como LibXML, que requiere LibXML.dll en el directorio bin de perl)?

Estaré usando el portátil Strawberry Perl para las versiones de lado a lado (el archivo Léame de Who menciona algunas configuraciones PATH, pero no menciona cuál se usa para qué).

Respuestas

1 para la respuesta № 1

Siempre que todas las DLL estén en el mismodirectorio como el ejecutable, debería funcionar normalmente. Si solo hay una entrada para Perl en la ruta, entonces las DLL deben estar en el mismo directorio que el ejecutable (o se encuentran usando alguna lógica explícita), por lo que debería estar bien. Cuando un ejecutable carga una DLL, el primer lugar buscado es el directorio que contiene el ejecutable.

Si se encuentra con problemas, una opción seríapara crear un archivo de comandos para cada versión. Podría dar estos nombres diferentes, como perl58.cmd, perl514.cmd, etc., ponerlos todos en un solo directorio y poner ese directorio en la ruta. En cada archivo de comandos, agregue el directorio Perl correspondiente a la ruta y luego inicie Perl con los argumentos de la línea de comandos:

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

Tenga en cuenta el uso de la setlocal comando para que el cambio en la ruta no se vuelva a exportar a la ventana de línea de comandos desde la que se ejecuta el archivo de comandos.


0 para la respuesta № 2

Te advierto que si no tienes el PerlEl directorio bin en el PATH, y todo lo que ejecute intenta invocar un programa que vive en el directorio bin sin proporcionar una ruta explícita (mala práctica, pero eso no impide que suceda), entonces se produce un error y depende de cómo la falla se maneja, podría manifestarse en problemas que son sutiles y difíciles de depurar.

Por lo tanto, le digo que, a menos que tenga una razón muy convincente para no agregarla (por ejemplo, la política de TI que lo hace prohibitivamente difícil y molesto agregar a PATH), luego agréguela.