sistema sintaxis programacion guia ejemplos ejecutar desde completo comando cero aprender perl shebang

sintaxis - perl guia completo pdf



¿Qué debería usar para la línea shebang de un script Perl? (8)

¿Cuál de estos es mejor o más rápido de usar como la línea shebang para una secuencia de comandos de Perl?

#! perl #! perl.exe #! fullpath/perl(/perl.exe) #! partialpath/perl(/perl.exe)

Y, cuando uso #!perl , cuando funciona en un sistema particular, ¿cómo averiguo en el script qué intérprete de Perl estoy usando para poder ponerlo en la línea de shebang?

Y, si se usa a /path/path/perl , ¿ * o ... permite usar para las carpetas?


Y, cuando se usa "#! Perl", cuando funciona en un sistema particular, ¿cuál es la impresión () para mostrar la ruta completa a perl.exe, que podría incluirse en la línea Shebang?

Bueno, si estás usando la declaración de impresión ya estás ejecutando código perl, entonces ...


  1. Como señaló ChristopheD, puedo confirmar por la práctica (ActivePerl en XP) que la línea shebang no es realmente necesaria en Windows.

    Una línea shebang le dice a un shell de Unix a qué intérprete debe pasar el script.

    En Windows, el programa para pasar el script se determinará por asociaciones basadas en la extensión.

  2. En Unix, la tercera opción (ruta completa al ejecutable perl ) es la mejor.

    Y sí, puede usar ".." en teoría (a Shell no le importa) pero no debería usar la ruta relativa, nunca se sabe cuál será su directorio de trabajo actual al ejecutar un script.


Esta es una de las cosas que no me gusta de Perl .

En Windows, si está utilizando ActiveState Perl al menos, si el archivo finaliza con .pl, el registro de Windows ejecutará el intérprete Perl por usted, independientemente de la línea de shebang. En Cygwin, no estoy seguro de por qué, pero #! perl #! perl también funciona. En Unix debes poner la ruta completa a tu ejecutable de Perl en la línea shebang. La idea de Schwern de usar env es conveniente, pero tiene algún peligro, como señalé en un comentario.

Es por eso que le sugiero que la mejor solución es empaquetar sus scripts de Perl como módulos de CPAN . Los instaladores de CPAN como Module :: Build luego cambiarán la línea shebang a la ruta completa a su intérprete Perl. (No estoy seguro de si el instalador de Schwern, ExtUtils :: MakeMaker, hace esto o usa env , ya que no lo uso).


La primera línea representa shebang. Básicamente le dice al programa dónde se encuentra el intérprete de Perl ya que Perl es el lenguaje interpretado. En Linux puedes escribir en terminal:

whereis perl

que le dará la ubicación exacta de la misma. Usualmente está dentro de / usr / bin / perl . Esto significa que quiere hacer shebang con respecto a / usr / bin / perl

#! /usr/bin/perl use strict; use warnings; use v5.10.1; . . .

Esta es solo una buena práctica, por lo tanto, obviamente es la solución más rápida.

Espero que encuentres esto útil,

Gracias.


Si está desarrollando en Unix usando Perl y usa "perlbrew" para cambiar fácilmente entre las diferentes versiones de Perl, entonces la línea shebang "! # / Usr / bin / env perl" funciona bien.


Si está ejecutando CGI a través de Apache en Windows, se usa SHEBANG. Necesitarás el camino completo a perl.


Si tiene que codificar # ¡#, use #!/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á ahí en los sistemas Unix.

Si el usuario está usando 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 está enviando 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 el punto /usr/local/bin/fooperl en /usr/bin/perl5.18 . Use #!/usr/local/bin/fooperl . Ahora, si decide actualizar Perl, puede hacerlo por proyecto cambiando el enlace simbólico.


Un she-bang de Windows (deducido del bit perl.exe ) parece irrelevante ya que tu (ejem) "shell" probablemente ni siquiera lo analiza (corrígeme si estoy equivocado, podría haber sido cambiado últimamente).

Sin embargo, algunos indicadores de línea de comandos todavía pueden ser recogidos por Perl (de acuerdo con este hilo ).