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.

 




Google
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
Politica de Privacidad