ein Kapitel zurück                                           ein Kapitel weiter

Um den Inhalt von Hashes zu speichern wird eine spezielle Datei, ein DBM-Datei, verwendet. Man spricht dabei von einer Persitenz von Hashes. Eine typische Anwendung dafür ist zum Beispiel ein Zähler von Webseiten und längeren Berechnungen. Sollten aber mehr als ein Zugriff auf diese Datei erfolgen, wie dies bei Statistiken von Webseiten häufig vorkommt, müssen sie dafür sorgen das diese Datei während diese Zugriffs gesperrt wird. Dazu später mehr bei der CGI-Programmierung.

Damit eine Änderung des Hashes in der DBM-Datei auch geschrieben wird benötigen wir die Funktion tie()
Um diesen Zustand wieder Rückgängig zu machen haben wir die Funktion untie()
Bitte beachten sie das tie() nicht die DBM-Datei sperrt auf die Zugegriffen wird. Dafür sind sie verantwortlich. Außerdem benötigen wir noch das Modul SDBM_File oder DB_File. Hierzu nun ein kleines Anwendungsbeispiel...

#!/usr/bin/perl -w

use SDBM_File;
use Fcntl;

tie(%email, 'SDBM_File', './dbmfile', O_RDWR|O_CREAT , 0640)
     or
     die "Fehler bei tie.........!\n";

print "Bitte geben sie den Namen ein : ";
chomp( $name=<>);
print "Bitte geben sie die E-Mail-Adresse ein : ";
chomp( $mail=<>);

$email{$name} = $mail;

print "Inhalt der DBM-Datei : \n";
print join ("\n" ,map { "($_ => $email{$_})" } sort keys %email), "\n";

untie(%email);


In Ihrem Verzeichnis finden sie jetzt eine Datei mit der Endung *.dir (Indexdatei) und *.pag (Datendatei). Beide Dateien werden benötigt zum damit die DBM-Library die Datei auslesen bzw. ändern kann. Sollten sie das Modul DB_Files verwenden ist dies nicht der Fall. DB_Files stellt auf alle fälle auch die schnellere Version dar. Ich habe hier das Modul SDBM_File verwendet weil es garantiert auf jedem System vorhanden ist.

Der Vorteil von DBM-Dateien liegt eindeutig an der Performance. Normalerweise müssten die Dateien zuerst in einem viruellen Speicher angelegt werden. Und solche DBM-Dateien können sehr gross werden. Durch die Funktion tie() wird versichert das kein virtueller Speicher verwendet wird, sondern alles wird in die DBM-Datei geschrieben. Dies wirkt sich auch besonders gut in der Performance aus wenn sie z.B. mehrer MB an Textdateien mit einem Wörterbuch, auf die richtige Schreibweise, überprüfen wollen.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf