[caracas-pm] Re: [l-desarrollo] HTML::Template

Ernesto Hernandez-Novich emhn at telcel.net.ve
Thu Jun 17 14:22:16 CDT 2004


On Wed, 16 Jun 2004, Alejandro Imass wrote:
> Hay dos cosas que yo uso mucho mientras desarrollo con Perl CGI.
> La primera es que siempre abro una shell que monitorea los logs de apache
> y tus scripts van a poner allm cualquier error o warning.

Es mucho mejor...

use strict;
use CGI::Carp qw(fatalsToBrowser);

El módulo CGI::Carp sobrecarga die, carp y warn, además de agregar croak,
cluck y confess.

Las funciones standard warn, die, croak, confess y carp emiten mensajes
de error que en una aplicación Web, como bien dijiste, van al log de
Apache.

El primer detalle es que los mensajes no tienen nin fecha ni hora, ni
tampoco indican cuál programa los emitió. La sobrecarga hace que las
funciones standard sean reemplazadas por funciones que si incluyen toda
la información antes descrita.

El segundo detalle, es que al utilizar fatalsToBrowser, cualquier error
generado en la fase de ejecución es enviado al _navegador_ directamente,
en lugar de ir al archivo de log de errores de Apache; esto es mucho más
conveniente para manejar los típicos errores de programación o ejecución.
Es más, CGI::Carp genera un encabezado HTTP mínimo, de modo que si
ocurre un error de _compilación_ te lo envía también al navegador.

El tercer detalle, es que si se desea tener un log _específico_ para la
aplicación Perl que estás desarrollando que esté _separado_ del log de
Apache (por razones de seguridad o de simple coquetería), el módulo
provee un mecanismo para desviar los mensajes generados con warn, die,
etc. a un archivo específico que, para un desarrollador, podría estar en
su directorio personal.

BEGIN {
  use CGI::Carp qw(carpout);
  open L, ">>/home/emhn/develop/foo.log" or
    die "No pude abrir el log! $!":
  carpout(L);
}

¡Pero aún hay más! El módulo es capaz de convertir los _warnings_ en
comentarios HTML. Esto hace que puedas ejecutar el programa y en lugar
de aparecer un mensaje de advertencia inesperado, se convierta a
comentario HTML para que no sea "visible" al usuario final.

> Como nota al margen, tambien recomiendo que uses use strict y monitorees
> los warning en el log mencionado arriba. use strict realmente te obliga
> a buenas practicas de programacisn en Perl.

Este es el comienzo más seguro

#!/usr/bin/perl -wT
use strict;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);

Por cierto, éste es el tipo de cosas que se conversan en las reuniones
de los Perl Mongers. No vamos a dar más cursos ni tutoriales porque
hemos concluido que es ineficiente; es mejor que los asistentes hagan
preguntas concretas como ésta. La próxima reunión es el sábado 19 a las
9:00am, el local deberíamos definirlo hoy en la noche
(http://www.pm.org.ve).
-- 
Ernesto Hernández-Novich - On Linux 2.6.6 i686 - Unix: Live free or die!
Geek by nature, Linux by choice, Debian of course.
If you can't apt-get it, it isn't useful or doesn't exist.
GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3



More information about the caracas-pm mailing list