Thanks guys, I think I've got it now. I simplified the
Dumper call and just pass refs around, which I think is what demerphq was talking about. The new _read and _write are:
# ----- private subs -----
sub _write { # still need to deal with race conditions
my $file = $_[0]->{FILE} ;
open (FH, "> $file") or die "Can't open $file for FileHash _write:
+ $!";
print FH Dumper($_[0]->{DATA});
close FH or die "Can't close $file for FileHash _write: $!";
}
sub _read { # still need to deal with race conditions
my $file = shift;
return undef unless -f $file;
my $ret;
unless ($ret = do $file) {
warn "couldn't parse $file: $@" if $@;
warn "couldn't do $file: $!" unless defined $ret;
}
return $ret;
}
Now I have to read up on writing methods...