next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Volcado automático de una Sup: ¿Atados? ó ¿Corbatas? ó Ant: ¿Atados? ó ¿Corbatas? ó Err: Si hallas una errata ...

Relaciones entre Persistencia y ties

El módulo Multi level DBM MLDBM permite guardar estructuras de datos Perl en ficheros DBM (Véase 1.8.11). Para tenerlo instalado es necesario tener previamente instaladas las rutinas Berkeley Database Manager. El módulo utiliza DBM, proveyendo la funcionalidad para serializar estructuras de datos anidadas. DBM es una librería que maneja tablas hash en disco. La librería ha dado lugar a un buen número de variantes: SDBM, NDBM, GDBM, etc las cuales pueden ser accedidas a través de los correspondientes módulos Perl, los cualés hacen uso de tie para proporcionar un acceso transparente a la tabla almacenada en el disco.

La capacidad de un sistema o módulo para hacer que la vida o ámbito de los datos de una aplicación se prolongen mas allá de la ejecución de la aplicación se conoce con el nombre de persistencia. Se conoce por serialización a los procesos encargados de empaquetar estructuras de datos anidadas como arrays de hashes etc. en una estructura plana y lineal. Es deseable que la representación de los datos sea independiente de la máquina, evitando problemas de representación de enteros y flotantes o del orden de los bytes.

Véase un ejemplo de uso del módulo MLDBM:

#!/usr/bin/perl -w
use MLDBM qw( DB_File Data::Dumper );
use Fcntl;

unlink 'mldbmtest.dat';

tie my %db1, 'MLDBM', 'mldbmtest.dat', O_CREAT | O_RDWR, 0666
    or die "No se pudo inicializar el fichero MLDBM: $!\n";

%db1 = (
    'alu2511' => {
        nombre => 'Josefina Fernández Pérez',
        tel => '922 00 00 00',
        fecha => '22/07/84'
    },
    'alu2233' => {
        nombre => 'Ana Feliú Forner',
        tel => '922 00 11 22',
        fecha => '14/06/85'
    }
);

untie %db1;

tie my %db2, 'MLDBM', 'mldbmtest.dat', O_RDWR, 0666
    or die "No se pudo inicializar el fichero MLDBM: $!\n";

print Data::Dumper->Dump( [ \%db2 ] );

untie %db2;

exit;
Cuando se ejecuta se obtiene el siguiente resultado:
 ./mldbmtest2
$VAR1 = {
  'alu2511' => {
     'fecha' => '22/07/84',
     'tel' => '922 00 00 00',
     'nombre' => 'Josefina Fernández Pérez'
  },
  'alu2233' => {
     'fecha' => '14/06/85',
     'tel' => '922 00 11 22',
     'nombre' => 'Ana Feliú Forner'
  }
};


next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Volcado automático de una Sup: ¿Atados? ó ¿Corbatas? ó Ant: ¿Atados? ó ¿Corbatas? ó Err: Si hallas una errata ...
Casiano Rodríguez León
2006-02-21