jueves, 28 de noviembre de 2013

Perl CGI

Perl CGI

CGI fue una de las primeras propuestas para crear dinámicamente una página web.
Instalado apache, es posible configurarlo para que ejecute los scripts perl que encuentre en un directorio.

Luego de eso, cree /usr/lib/cgi-bin/perltest.pl:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World.";

Pero obtenía un mensaje de Internal Server Error al acceder a http://localhost/cgi-bin/perltest.pl

El log de errores de apache indicaba Premature end of script headers. Según la documentación de Apache http://httpd.apache.org/docs/2.2/howto/cgi.html, el script no se estaba ejecutando. Probé con el comando ./perltest.pl y me dió el error:

/usr/bin/perl^M: bad interpreter: No such file or directory

Si la ruta de perl es la correcta, esto ocurre porque el retorno de línea del archivo es tipo DOS/Windows y bash supone que debe ser tipo Unix.

Se puede solucionar colocando -- al final, para cortar los caracteres problemáticos:

#!/usr/bin/perl --
print "Content-type: text/html\n\n";
print "Hello, World.";

O también convirtiendo el formato. Por ejemplo, ejecutando el comando: dos2unix perltest.pl

Luego de eso, pude ver correctamente la página generada :-)

Referencias: