UNIDAD 6: REGISTROS Y ARCHIVOS DIRECTOS

TEMA PERL 6: BAJAS O ELIMINACIONES

Eliminacion o bajas es el proceso por medio del cual algunos registros del archivo son purgados del archivo, existen dos maneras por las cuales se puede realizar ese proceso.

En la primera manera se usan dos archivos, el archivo original y un archivo temporal, el procedimiento o algoritmo es muy sencillo, se lee el registro del archivo original y si no es el registro a eliminar entonces se almacena en el archivo temporal, cuando se termina de procesar todo el archivo original, el archivo temporal solo contendra todos los registros que no se quisieron eliminar, ya con estos dos archivo se procede a eliminar o borrar usando la instruccion remove de gcc-linux el archivo original y se procede a renombrar usando la instruccion rename de gcc linux el archivo temporal como nuevo archivo original.

Sin embargo en archivos directos no se puede ni se debe eliminar fisicamente registros de los archvivos porque recordar que la clave del registro esta enlazada directamente a la posicion que dicho registrotiene en disco y no seria muy conveniente estarle cambiando la matricula al alumno cada rato o el nuemro de serie al auto, etc.

Aprte de que con esta manera de eliminar incluso fisicamente los registros del archivo es que no hay manera de recuperar esa informacion posteriormente.

Es por eso que otra tecnica comun de eliminacion es incluir un campo de estado, status o bandera o semaforo en el registro y conforme se va cargando el registro y antes de mandarlo a disco se le agrega a dicho campo el caracter 'A' –>alta, asi que cuando se quiera una baja solo se pondria dicho campo en 'B' y todos los programas de lectura, busqueda y filtros deberan revisar esta campo de estado antes de hacer algo con el registro.

Prog34.pl

#! /usr/bin/perl -w
# usando modulo o libreria CGI
use CGI;
use IO::Seekable;
# 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 ELIMINAR : ";
print $q->textfield('CLAVE1','', 5);
# creando un submit button
print $q->submit('ELIMINAR');
# cerrando la forma
print $q->endform();
# cerrando html
print $q->end_html;
if ( $q->param('ELIMINAR')) {
# abriendo archivo para lectura
open(ARCHIVO, "+<DATOS.DAT") || die "No se pudo abrir archivo";
# cargando clave eliminar
$clave1 = $q->param('CLAVE1');
# posicion para lectura
seek(ARCHIVO, $clave1*39, SEEK_SET);
# leyendo registro
read(ARCHIVO, $temporal, 39);
# desempacandolo
($clave, $nombre, $edad, $bandera) = unpack("I A30 I A1", $temporal);
# cambiando status a eliminacion
$bandera = "B";
# posicion para escritura y regrabando
seek(ARCHIVO, -39, SEEK_CUR);
print ARCHIVO pack("I A30 I A1", $clave, $nombre, $edad, $bandera);
# cerrando archivo
close(ARCHIVO);
$temp = $q->param('CLAVE1');
print "REGISTRO $temp ELIMINADO" ;
};

corrida:

image276.jpg

TAREAS PROGRAMACION PERL :

Construir programa de eliminacion usando bajas logicas para los archivos construidos.

Politica de Privacidad