UNIDAD 1: ELEMENTOS BASICOS

TEMA PERL 9: APLICACION PERL CGI

En este modelo de programacion, un programa o script o cgi en perl puede ser una combinacion de:

1.- Codigo y objetos HTML: conseguir y estudiar un tutorial de HTML al final de este capitulo viene un apendice con los objetos ( no instrucciones html).

2.- Codigo en PERL, al final de este capitulo tambien se incluye un apendice con las palabras reservadas de PERL.

3.- Un objeto y sus metodos derivados de la clase CGI.PM, esta clase ya casi un estandar para tratamiento y construccion de programas CGI con perl, contiene una serie de metodos apropiados para la construccion de CGI's.

Al final de este capitulo tambien se incluyo la documentacion original de esta clase CGI.PM

EL procedimiento de construccion de programa construye una forma o pagina dinamica que contiene los componentes, controles u objetos HTML para resolver el problema, y un poco de codigo en perl para resolver el problema planteado.

Resolvemos el problema de calcular el area de un triangulo con la formula area = base por altura sobre dos.

El codigo del programa prog1.pl es:

 
#! /usr/bin/perl -w
 
# usando modulo o libreria CGI
 
use CGI;
 
# creando un OBJETO de tipo CGI
 
$q = new CGI;
 
# programa
 
if ($q->param('OK')) {
 
# area de declaracion y captura
 
$base = $q->param('BASE');
 
$altura = $q->param('ALTURA');
 
# area de operaciones
 
$area = $base * $altura / 2;
 
# area de despliegue
 
$q->param('AREA',$area);
 
};
 
# mandando servidor los encabezados de la pagina html
 
print $q->header;
 
print $q->start_html({-title=>'PROGRAMA1.PL'});
 
# mandando textos html y query puede usar cualquier tag html
 
print $q->h3("MI PRIMER PERL CGI");
 
print $q->hr();
 
# creando una forma o ventana
 
print $q->startform();
 
# agregando los objetos HTML para resolver problema
 
print "BASE : ";
 
print $q->textfield('BASE','0', 5);
 
print $q->br();
 
print $q->b("ALTURA :");
 
print $q->textfield('ALTURA', '', 5);
 
print $q->br();
 
# creando un submit button
 
print $q->submit('OK');
 
print $q->b("AREA :");
 
print $q->textfield('AREA','',5);
 
# cerrando la forma
 
print $q->endform();
 
#cerrando html
 
print $q->hr();
 
print $q->end_html;

NOTAS:

1.- La primera instruccion es un default para que el servidor LINUX conozca donde encontrar el compilador de perl.

2.- Comentarios en perl (que no tienen ningun efecto en codigo) empiezan con #.

3.- Se usa la instruccion use de perl para que incluya en el programa toda la clase o libreria de CGI.PM

4.- Se crea un objeto $q (puede ser cualquier variable pero lo acostumbrado es $q o $query) derivado de la clase CGI.pm, este objeto $q puede usar todos los metodos de la clase cgi.pm, observar que para agregar un metodo al objeto se usa el simbolo

5- Se construye el programa que resuelve el problema, y recordar construirlo antes de empezar la forma o ventana.

5.1- Se usa un metodo de if ($q→param('OK')){codigo perl;}; el control o componente BUTTON, tiene asociado este VALOR('OK'), mismo que se esta usando para detectar el momento o evento en que el usuario manda los datos de la forma o ventana al servidor.

5.2- El programa es sencillo, primero se toman los datos o valores de los componentes TEXTFIELD y se pasan a variables normales de perl, tambien con el auxilio del metodo $q→param('IDENTIFICADOR'); ya cargadas estas variables se resuelve la operacion y el resultado se manda a otra variable perl, misma que se manda al TEXFIELD que contendra el resultado(AREA).

5.3- Observar que el metodo $q→param() se esta usando de tres maneras, para DETECTAR el evento click que el usuario hace sobre el componente SUBMIT o BUTTON de la forma, tambien se uso para LEER el dato de un componente TEXFIELD(BASE, ALTURA) y por ultimo tambien se usa para CARGAR con datos o valores un componente TEXTFIELD(AREA).

5.4- Recprdar tambien que si en algun programa o forma se utilizan mas de un control o componente SUBMIT o BUTTON, se tendran que construir mas de un if, ejemplo if ($q→param('BUT1')){codigo perl;}; if ($q→param('BUT2')){codigo perl;}; en el mismo lugar de arriba o antes de la forma o ventana.

5.5- LA REGLA DE PONER EL PROGRAMA ANTES DE LA FORMA NO ES CIERTA EN TODOS LOS CASOS, TAMBIEN SE PUEDE PONER EL PROGRAMA AL FINAL DE LA FORMA SIEMPRE Y CUANDO NO SE QUIERA CARGAR ALGUN DATO EN ALGUNO DE LOS COMPONENTES O CONTROLES VISUALES DE LA FORMA.

6- Otros metodos del objeto $q que se estan usando en el programa son:

q→header() : se usa para que el servidor construya y mande los encabezados html apropiados al browser del cliente.

q→start_html() : empiezo de construccion de una pagina html

q→h3() : tag o instruccion html para que despliegue textos o mensajes fijos o estaticos tamano TITULO (existen desde h1 hasta h6) ver tutorial html

q→hr() : tag html para desplegar la barrita

q→startform() : tag html para crear una forma o ventana que puede contener controles o componentes HTMl, estas formas deben contener una accion (action=) y un metodo (method=) pero cgi.pm los agrega por default (ver codigo fuente cuando este corriendo el programa en tu browser).

q→textfield(nombrecampo,valor,tamano) : crea un componente, control u objeto html (input type=textbox) que permite capturar y desplegar datos, observar, aprender y usar sus tres argumentos o parametros.

q→br() : tag html para cambio o nuevo renglon

q→submit(texto o mensaje) : crea el objeto html de tipo button, que se especializa en activar otra vez el prog1.pl y ademas mandar los datos contenidos en los textfield's proporcionados por los usuarios.

q→endform() : termina de construirse la forma o ventana.

q→param() : Metodo importante de la clase cgi.pm nos permite cargar o leer cualquier parametro (incluyendo los textfields) del programa, en este ejemplo se esta usando para leer los datos contenidos en los textfields y se estan pasando a una variable de perl.

Despues de cargar las variables($base, $altura) con los datos de los textfield's, se esta resolviendo el problema y cargando una tercera variable($area) perl que contendra el resultado.

q→b() : tag html para desplegar mensajes en negritas (boldface)

q→end_html() : termina el documento o pagina html

Este programa perl (prog1.pl) tambien puede llevar por extencion cgi (prog1.cgi) debera crearse con el notepad de windows o el editor de linux, revisar que la extension (.pl) sea la correcta, recordar que notepad a veces les agrega la extencion .txt ( queda como prog1.pl.txt) que no sirve para el servidor linux, en este ultimo caso renombrarla dentro del command prompt o msdos de tu windows.

Ya creado correctamente subirlo a tu servidor de linux usando el ftp del internet explorer ( o algun otro programa cliente ftp), al folder cgi-bin.

Recordar que en linux todos los archivos deben tener sus permisos apropiados y para el caso de prog1.pl el permiso que se pide es el de ejecucion de programas (chmod 755), usar el programa putty ( ya lo bajaron y practicaron como se pidio en el apendice telnet del TEMA PERL anterior ?).

Pantalla putty y observar que se realizo en el caso ejemplo:

image237.jpg

Para ejecutarlo desde tu browser usar la siguiente direccion internet:

TUSITIO.COM/~tusitio/cgi-bin/prog1.pl

En este caso particular se uso una direccion local ip numerica:

192.168.1.251/~lauro/cgi-bin/prog1.pl

pantalla corrida:

image254.jpg

SUERTE Y TAREAS PROGRAMACION PERL :

Seleccionar y construir 15 de los programas que vienen en el TEMA PERL de modelo de solucion.

Politica de Privacidad