######################################################################
# Persistent.pm
######################################################################
# Perl Power! - Michael Schilli 1998
######################################################################

######################################################################
  package Persistent;
######################################################################

use Data::Dumper;                          # utility for data analysis

######################################################################
# $objref->store("filename")     # store object persistently in file
######################################################################
sub store {              
    my ($self, $filename) = @_;
                                        
    open(FILE, ">$filename") || return 0;  # open file

    while (($key, $val) = each %$self) {   # entries in instance hash

        $d = Data::Dumper->new([$val], ["self->{$key}"]);
        $d->Purity(1);                     # circular references
        print FILE $d->Dump();             # output
    }

    close(FILE);                           # close file
    1;
}

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

    %$self = ();                           # empty out object
    open(FILE, "<$filename") || return 0;  # open file
    $data = join('', <FILE>);              # read all lines
    eval $data;                            # ... and evaluate them
    close(FILE);                           # close file
    1;
}

1;

