##############################################################
######################################################################
# (c) Michael Schilli 1999
######################################################################
  package Persistent;
##############################################################
use Data::Dumper;                  # Utility zur Daten-Analyse

##############################################################
#                        # Objekt persistent in File speichern
# $objref->store("filename")
##############################################################
sub store {              
    my ($self, $filename) = @_;
                                        
    open(FILE, ">$filename") || return 0;  # Datei öffnen

                                    # Einträge im Instanz-Hash
    while (($key, $val) = each %$self) {   

        $d = Data::Dumper->new([$val], ["self->{$key}"]);
        $d->Purity(1);              # Zirkuläre Referenzen
        print FILE $d->Dump();      # Ausgeben
    }

    close(FILE);                    # Datei schließen
    1;
}

##############################################################
# $objref->load("filename")         # Objekt laden
##############################################################
sub load {
    my ($self, $filename) = @_;

    %$self = ();                    # Objekt leeren
                                    # Datei öffnen
    open(FILE, "<$filename") || return 0;  
    $data = join('', <FILE>);       # Alle Zeilen auslesen
    eval $data;                     # ... und evaluieren
    close(FILE);                    # Datei schließen
    1;
}

1;
