Prof. Franz Schweiggert Abteilung Angewandte Informationsverarbeitung 15. Juni 2005
Christian Ehrhardt Blatt 10


Uni Logo



Unix-basierte Implementierung kleiner Datenbanken (SS 2005)


Abgabetermin 22.06.2005

Ein Modul für ASCII-Tabellen

In diesem Blatt soll ein kleines Modul Table.pm geschrieben werden, mit dem die bekannten ASCII-Tabellen auf bequeme Weise verarbeitet werden können. Wir gehen davon aus, daß immer eine Zeile einen Datensatz repräsentiert. Die erste Zeile enthält die Spaltennamen und ist selbst kein richtiger Datensatz. Wir gehen weiterhin davon aus, daß es in jeder Tabelle mindestens eine Spalte gibt, die als Schlüssel verwendet werden kann.
Das Modul Table.pm soll die folgenden Operationen unterstützen:

new Table(filename, seperator, key)
liest eine wie oben beschriebene Tabelle aus der Datei filename ein. seperator ist der Spaltentrenner, der in der Tabelle verwendet wird und key ist der Name der Spalte, die als Schlüssel verwendet werden soll. Die Funktion agiert als Konstruktor und liefert ein Objekt zurück. Die folgenden Funktionen sollen dann Methoden eines solchen Objekts (im folgenden durch $t bezeichnet) sein.
$t->sync()
schreibt eine möglicherweise veränderte Version der ursprünglichen Tabelle in die Datei, aus der die Tabelle ursprünglich gelesen wurde. Dabei soll der selbe Trenner, der selbe Dateiname und die selbe Reihenfolge der Spalten verwendet werden. Diese Methode erhält keine (expliziten) Parameter.
$t->get(key)
sucht den Eintrag der zu key gehört und liefert diesen Eintrag in From eines Hashzeigers zurück. Der Hash auf den der Rückgabewert zeigt, ordnet jedem Spaltennamen der Tabelle den entsprechenden Wert des Tabelleneintrags zu.
$t->update($hash)
bekommt einen Eintrag in Form eines Hashzeigers übergeben. Der Eintrag in der Tabelle wird entsprechend aktualisiert oder es wird ein neuer Eintrag angelegt.
$t->remove(key)
löscht den Eintrag von key aus der Tabelle.
$t->entries()
liefert eine Liste aller Schlüssel, die in der Tabelle vorkommen.
$t->keycolumn()
liefert den Namen der Spalte, die im Moment als Schlüssel verwendet wird.
$t->columns()
liefert eine Liste aller Spaltennamen.
Auf der Homepage der Vorlesung wird ein kleines Testprogramm testtable.pl für das Modul Table.pm und eine Testtabelle addr.tab zur Verfügung gestellt. Eure Implementierung des Moduls Table.pm sollte so gestaltet werden, daß keine Änderungen an der Datei testtable.pl selbst notwendig sind.



Christian Ehrhardt 2005-06-15