Section courante

A propos

Section administrative du site

AnyDBM_File

N'importe quel fichier DBM
Perl
 

Ce module permet de fournir un cadre d'application pour des multiples DBM. Il existe différentes implémentations de DBM : NDBM_File, DB_File, GDBM_File, SDBM_File, ODBM_File.

Synopsis

  1. use AnyDBM_File;

Description

Ce module est une «classe de base virtuelle pure» : il n'a rien de propre. Il est simplement là pour hériter de l'un des différents paquet DBM. Il privilégie ndbm pour des raisons de compatibilité avec Perl 4, puis Berkeley DB (voir DB_File), GDBM, SDBM (étant toujours présent ; il est fourni avec Perl) et enfin ODBM. Ainsi, les anciens programmes utilisant NDBM via dbmopen() peuvent continuer à le faire, mais les nouveaux peuvent réorganiser @ISA :

  1. BEGIN { @AnyDBM_File::ISA = qw(DB_File GDBM_File NDBM_File) }
  2. use AnyDBM_File;

Le fait d'avoir plusieurs implémentations DBM rend triviale la copie des formats de base de données :

  1. use Fcntl; use NDBM_File; use DB_File;
  2. tie %newhash,  'DB_File', $new_filename, O_CREAT|O_RDWR;
  3. tie %oldhash,  'NDBM_File', $old_filename, 1, 0;
  4. %newhash = %oldhash;

Comparaisons DBM

Voici un tableau partiel des fonctionnalités offertes par les différents paquets :

Description odbm ndbm sdbm gdbm bsd-db
La liaison est livrée avec perl oui oui oui oui oui
Le source est fourni avec Perl non non oui non non
Livré avec/de nombreux systèmes d'exploitation Unix oui oui[0] non non non
Compilation correcte sur !unix ? ? oui oui ?
Taille du code ? ? petit gros gros
Taille de la base de données ? ? petit gros? correcte[1]
Vitesse ? ? lent correcte rapide
FTPable non non oui oui oui
Facile à construire N/A N/A oui oui correcte[2]
Limites de taille 1k 4k 1k[3] aucun aucun
Indépendant de l'ordre des octets non non non non oui
Restrictions de licence ? ? non oui non

Voir également

dbm(), ndbm(), DB_File(), perldbmfilter.



Dernière mise à jour : Vendredi, le 27 juin 2025