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:
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:
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.