UNIDAD 6: REGISTROS Y ARCHIVOS DIRECTOS

TEMA PERL 4: BUSQUEDA

En este TEMA PERL se analiza la busqueda de un registro o renglon determinado.

En este proceso el usuario del programa quiere que se despliegue un y solo un registro de informacion proporcionando un dato de busqueda generalmente la clave del registro.

Recordar que en esta operacion se muestra la diferencia fundamental entre archivos secuenciales y archivos directos, es decir aqui se puede accesar directamente un registro n cualesquiera.

Prog32.pl

#! /usr/bin/perl -w
# usando modulo o libreria CGI
use CGI;
# creando el OBJETO de tipo CGI
$q = new CGI;
# mandando servidor los encabezados de la pagina html
print $q->header;
print $q->start_html();
# creando una form o ventana
print $q->startform();
print "CLAVE A BUSCAR: ";
print $q->textfield('CLAVEBUSCAR','', 5);
# creando un submit button
print $q->submit('BUSCAR');
# cerrando la forma
print $q->endform();
# cerrando html
print $q->end_html;
if ( $q->param('BUSCAR')) {
# empezando una tabla html
print "<HTML><TABLE Border=10 CellPadding=5><TR>";
# construyendo los encabezados de la tabla
print "<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th></TR>";
# abriendo archivo
open(ARCHIVO, "DATOS.DAT") || die "No se pudo abrir archivo";
# posicionando en registro deseado
$claveb = $q->param('CLAVEBUSCAR');
seek(ARCHIVO, $claveb*39, 0);
# leyendo registro
read(ARCHIVO, $temporal, 39);
# desempacandolo
($clave, $nombre, $edad, $bandera) = unpack("I A30 I A1", $temporal);
if($bandera eq "A")
{ print "<TR><TD>"."$clave"."</TD><TD>"."$nombre"."</TD><TD>"."$edad"."</TD></TR>";};
print "</TABLE>";
close(ARCHIVO);
};

corrida:

image274.jpg

Como se desprende del programa usando seek() es posible posicionarse en cualquier byte del archivo.

El formato completo de seek() es:

seek(apuntador, clave*tamanoregistro,0);

donde los parametros son:

  1. apuntador al archivo en disco
  2. El segundo parametro es el BYTE donde se quiere que empieze la lectura o grabacion al archivo en disco.
  3. Como va a estar dificil que se le atine a un byte determinado, es por eso que en el programa mejor se deja que sea el propio servidor quien calcule el byte donde empieza un registro determinado con clave * tamano de registro.
  4. El tercer parametro es a partir de donde se quiere posicionar el apuntador interno del archivo, los valores pueden ser:

0 —> SEEK_SET principio del archivo.

1 —> SEEK_CUR posicion actual.

2 —> SEEK_END fin del archivo.

Tambien recordar que si se usan SEEK_? Se debera incluir una libreria especial de perl como en ejemplos mas adelante se muestran.

TAREAS PROGRAMACION PERL MYSQL

Construirles programas de busquedas a los archivos ya construidos.

Politica de Privacidad