ich verwende das Modul Storable um Daten meines Scripts zu speichern und beim nächsten Aufruf wieder zur Verfügung zu haben. Dafür verwende ich folgendes zum Schreiben:
@foo = ("foo", "bar", "foo1", "bar1");
@bar = ("foo2", "bar2", "foo3", "bar3");%complete = (foo => @foo, bar => @bar);
open (DB, ">db.db");
store_fd(%complete, *DB);
close (DB);
>
> Und zum Einlesen:
>
> ~~~perl
> open (DB, "<db.db");
> %complete = %{fd_retrieve(*DB)};
> close (DB);
>
> @foo = %{$complete{"foo"}};
> @bar = %{complete{"bar"}};
>
Das wird bei vielen Variablen recht unübersichtlich (vorallem beim dereferenzieren nach dem Einlesen). Über Vorschläge zur Übersichtlichkeitsoptimierung würde ich mich daher freuen! :D
Deine Frage hat also nichts mit Storable an sich zu tun, sondern mit dem Hash und der Frage wie du ihn strukturierst.
Aber etwas möchte ich dir doch ans Herzen legen. Unter Umständen solltest du lock_store und lock_retrieve verwenden. Sonst hast du ein Schlamassel.
Ich finde die Datenstruktur selbst unproblematisch. Man muss sie halt Dokumentieren, so wie du auch ein anderes Datenformat dokumentieren würdest.
Eventuell hilft es, wenn man nicht alle Daten im gleichen hash speichert, sondern mehrere Hashes separat über Storable verwaltet.
Das musst du aber selber entscheiden.
mfg Beat
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische