[Perl] SOS XML y CGI

Antonio Galicia Ceballos jcgalici en agc.com.mx
Mie Mayo 19 11:29:08 CDT 2004


On Wed, 19 May 2004, John Robeto wrote:

> Hola a todos, hace un par de días que tengo un
> problema. He creado un formulario en el que un usuario
> introduce un texto y debe recibir como salida el mismo

 ¿Es tu primer CGI? Supongamos que sí para ahorra tiempo.

> use CGI;
> $query = new CGI;
> print $query->header;

 ¿Debe verse el código o debe intentar "parcearlo"? Esto es importante 
dado que pendiendo de esto es el header que enviar con la respuesta. Con 
este que pones, "debe" aparecer el resultado como "text/html", cosa que 
puedes comprobar si haces esto desde el prompt:

	perl -e 'use CGI; $q=new CGI; print $q->header'

> # convertir la entrada en XML. Este módulo genera el
> # archivo salida.xml
> use myModulo qw(xml);
> xml("texto.txt");

 Bien, si lo que debes regresar esta en un archivo bastará con que lo leas 
y lo escribar a la salida estandar:

	open F, "salida.xml";
	while(<F>){print};
	close F;

> print "Content-Type: text/xml\n\n”; #creo que va esto
> print ….. #AQUÍ ES DONDE FALLO, CÓMO DEBE IR LA SALIDA?

 El "Content-Type" ya se imprimio así que esto que haces ya no tiene 
sentido. Por esto es que preguntaba qué espera obtener en el browser. Una 
buena práctica es que agreges una "liga" al documento (el salida.xml) para 
que lo pueda "bajar" sin tener que recurrir al cute&paste.

 Un detalle a considerar: "concurrencia". Si más de una persona esta 
ejecutando el CGI en un momento determinado puedes tener problemas ya que 
según parece el "salida.xml" se sobre-escribirá con dada nuevo acceso.

 Saludos,
 Toño.


Más información sobre la lista de distribución Perl