Si usted tiene que codificar # !, utilizar #!/usr/bin/env perl
. ¿Por qué? Lo que desea es que el programa Perl se ejecute con Perl preferido del usuario. Ese va a ser el primero en su PATH
. #!perl
no hace lo que quiero decir, no busca en la RUTA del usuario, #!/usr/bin/env perl
es la forma de hacerlo. /usr/bin/env
siempre estará allí en los sistemas Unix.
Si el usuario está utilizando Windows, como han señalado otros, no importa. Windows no usa #! usa asociaciones de extensión de archivos. Asegúrese de que su programa se llame foo.pl
o algo así y funcionará. ¡Pero incluye el #! línea de todos modos como algunas utilidades y editores hacen uso de ella.
Si envía el código, deje que el instalador se encargue de ello. ¡Tanto MakeMaker/Makefile.PL
como Module::Build/Build.PL
cambiarán tu #! línea para que coincida con el perl con el que el usuario solía instalar. Ellos se encargarán de este problema por ti.
Si está instalando código para su propio uso de producción, debe usar la ruta completa a una copia particular de perl. ¿Qué copia de perl? Uno específico para su proyecto. ¿Esto significa que necesita compilar Perl para cada proyecto? No, puedes hacer un enlace simbólico. Project foo podría tener /usr/local/bin/fooperl
punto en /usr/bin/perl5.18
. Use #!/usr/local/bin/fooperl
. Ahora, si decide actualizar Perl, puede hacerlo por proyecto cambiando el enlace simbólico.
Para responder a la segunda pregunta, 'print $^X' muestra la ruta al archivo ejecutable perl activo. – mob
En MacOS X (y creo que la mayoría de las versiones de Unix), '#! Perl' no funciona en absoluto. Necesita un camino completo. –