La librería CGI::WML

Autor: J. G. Castellano (fjgc@decsai.ugr.es)

1.- La librería CGI.pm de Perl.

Hasta ahora, hemos estado trabajando con Perl sin utilizar ninguna de las muchas librerías de las que existen para trabajar con CGIs(están todas en www.cpan.org), ahora vamos a ver la librería de Perl para hacer CGIs y, concretamente, nos vamos a centrar en la parte de CGI para WML, el módulo CGI::WML.

Aquí no vamos a ver la librería CGI.pm, la cual sirve para realizar CGIs orientados a HTML, sino la librería CGI::WML (que hereda de la primera). El que tenga curiosidad en conocer CGI.pm puede ecnontrar un tutorial de inicio en http://decsai.ugr.es/~pedro/curso_comercio/cgi.pm.htm y más información en http://stein.cshl.org/WWW/software/CGI/cgi_docs.html

2.- La librería CGI::WML.

CGI::WML permite programar CGIs para WAP/WML, al ser una subclase de la librería CGI.pm, sigue su filosofía y hereda sus métodos. La versión m´s actualizada de esta liberia está en http://wap.z-y-g-o.com/tools (y aquí teneis una copia local de esta referencia).

Para empezar, veamos un ejemplo que muestra cómo se usa la librería para hacer un CGI de WML rápidamente:

Ejemplo

#!/usr/bin/perl

#Ponemos que vamos a usar la librería CGI::WML
use CGI::WML;

#Creamos un objeto CGI
my $mi_cgi=new CGI::WML;

#Creamos la página WML
print $mi_cgi->header(),                           #Cabecera con el tipo MIME
      $mi_cgi->start_wml(),                        #Principio de la página WML  
      $mi_cgi->card(-id=>"ejemplo1",               #Creamos una carta del página WML   
                    -title=>"Ejemplo 1",
                    -content=>"<p>Hola mundo del wap</p>"),
      $mi_cgi->end_wml();                          #Cerramos la página WML

Probar el ejemplo...

2.1 Sintaxis y uso de las rutinas

Como hemos visto en el ejemplo anterior, las distintas funciones aceptan varios argumentos (hasta 20), aunque normalmente todos son opcionales. Dichos argumentos son los atributos y contenidos de las etiquetas que las dunciones representan.

En el ejemplo visto en el apartado anterior la línea:

	....
	<card id="ejemplo1" title="Ejemplo1">
		<p>Hola mundo del wap</p>
	</card>
	....

Se ha escrito de la siguiente manera:

	....
    $mi_cgi->card(-id     =>"ejemplo1",               
                  -title  =>"Ejemplo 1",
                  -content=>"<p>Hola mundo del wap</p>"),
	....

Aunque también podemos usar escribirlo como hemos hecho antes:

....
print<<"carta_wml";
	<card id="ejemplo1" title="Ejemplo1">
		<p>Hola mundo del wap</p>
	</card>
carta_wml
....

Por lo que el ejemplo anterior, lo podíamos haber puesto como:

#!/usr/bin/perl

#Ponemos que vamos a usar la librería CGI::WML
use CGI::WML;

#Creamos un objeto CGI
my $mi_cgi=new CGI::WML;

#Creamos la página WML
print $mi_cgi->header();                           #Cabecera con el tipo MIME
print $mi_cgi->start_wml();                        #Principio de la página WML  

#Creamos una carta en la página WML
print<<"carta_wml";
	<card id="ejemplo1" title="Ejemplo1">
		<p>Hola mundo del wap</p>
	</card>
pagina_wml


print $mi_cgi->end_wml();                          #Cerramos la página WML

El nombre de los argumentos puede ir en mayúsculas o minúsculas y en cualquier orden.

2.2 Funciones para crear una baraja (deck)

Veamos las funciones más básicas para realizar un CGI WML con CGI::WML:

Veamos el ejemplo que mostraba la hora, utilizando las funciones de CGI::WML que hemos visto:

#!/usr/bin/perl

#Ponemos que vamos a usar la librería CGI::WML
use CGI::WML;

# parte activa del programa
($s,$m,$h, @resto) = localtime(time);

#Creamos un objeto CGI
my $mi_cgi=new CGI::WML;

#Cabecera con el tipo MIME de WML
print $mi_cgi->header();                           

#Principio de la página WML  
print $mi_cgi->start_wml();                        

#Creamos una carta en la página WML que ponga la hora
print<<"carta_wml";
	<card id="ejemplo_hora" title="La Hora">
		<p>La hora actual es $h:$m:$s</p>
	</card>
carta_wml

#Cerramos la página WML
print $mi_cgi->end_wml();                          


	
Probar el ejemplo...

2.3 Funciones para crear elmentos de una página WML

Veamos las funciones para constrir elementos de WML en un CGI usando CGI::WML :

2.4 Acceso a los parámetros de un CGI

En la librería CGI.pm y, por ende, en la librería CGI::WML la captura de parámetros se hace igual: utilizando el método param, d´ndole como atributo el nombre del parámetro del CGI qeu queremos coger. Veamos un ejemplo:

  .... 
  $nombre=$mi_cgi->param('NOMBRE');
  ....

3.- Ejercicios

Hora y fecha

Ejercicio
Coger el ejercicio realizado anteriormente de un CGI para mostrar la hora y la fecha y rehacerlo usando CGI::WML.

Contador

Ejercicio
Coger el ejercicio realizado anteriormente de un CGI para contar las visitas y rehacerlo usando CGI::WML.

Libro de visitas

Ejercicio
Coger el ejercicio realizado anteriormente de un CGI para hacer un libro de visitas y rehacerlo usando CGI::WML.

 
Grupo GeNeura. http://geneura.ugr.es
Departamento de Arquitectura y Tecnología de los Computadores.
Universidad de Granada