Al momento de desarrollar scripts Perl puede resultar conveniente verificar la sintaxis antes de ejecutarlos. Especialmente cuando se trata de scripts CGI o módulos que no se puede ejecutar directamente (archivos .pm). En este artículo demuestro cómo hacerlo.



Supongamos que tengo el siguiente script Perl test.pl que implementa un simple "Hola mundo!":

emi@vaio:/tmp$ cat test.pl
#!/usr/bin/perl

print "Hola mundo!\n"

exit 0;

Al ejecutarlo, arroja error de sintaxis:

emi@vaio:/tmp$ ./test.pl 
syntax error at ./test.pl line 5, near "exit"
Execution of ./test.pl aborted due to compilation errors.

Esto se debe a que falta un punto y coma luego de la sentencia print.

Como mencionaba, a veces es conveniente verificar la sintaxis antes de ejecutar (por seguridad o consistencia de los datos que pueda llegar a manipular el script) o porque no es posible ejecutarlo directamente sino que es un módulo parte de un programa más grande.

En estos casos es posible verificar la sintaxis sin ejecutar mediante la opción -c:

emi@vaio:/tmp$ perl -c test.pl 
syntax error at test.pl line 5, near "exit"
test.pl had compilation errors.

Esta opción revisa la sintaxis sin ejecutar, lo que nos permite corregir el programa o script:

emi@vaio:/tmp$ nano test.pl

Se agrega el punto y coma faltante:

#!/usr/bin/perl

print "Hola mundo!\n";

exit 0;

Al verificar nuevamente, retorna "OK":

emi@vaio:/tmp$ perl -c test.pl 
test.pl syntax OK

Y es posible ejecutar el script sin problemas:

emi@vaio:/tmp$ ./test.pl 
Hola mundo!

Existen dos opciones interesantes que habilitan warnings. Esto es advertencias de fallos que no necesariamente impiden que se pueda ejecutar el código pero que pueden causar problemas. Estas son -w para habilitar algunos warnings útiles y -W para habilitar todos los warnings:

  -w                enable many useful warnings
  -W                enable all warnings

Estos se pueden utilizar en conjunto con -c de la siguiente forma:

$ perl -cw test.pl
$ perl -cW test.pl

Para obtener más información, recurrir a la ayuda del intérprete Perl:

$ perl -h
$ perl --help


Tal vez pueda interesarte


Compartí este artículo