Hi all, I want to store some complex data. My first solution made use of Storable, which worked just fine. Now I learned that neither Storable nor MLDBM are available on the machine I want to use the program on (and they cannot be made available).
So I retreat to the core and use Data::Dumper to write a reference to my data to a file ("..." indicates an omitted hash of arrays of hashes): #!/usr/bin/perl -w use strict; use Data::Dumper; my %monate = ... open OUT, "> monate.dbm"; print OUT Dumper(\%monate); close OUT; Next I try to restore the data. My first attempt is this: open IN, "monate.dbm"; my $temp = join '', <IN>; my $reimport = eval $temp; Unfortunately, $reimport has the same value as $temp: $VAR1 = ... Reading the Data::Dumper doc? Good idea. I found the $Data::Dumper::Terse variable, which made Data::Dumper leave out the variable name $VAR1. Great, it works. But, from the perldoc >$Data::Dumper::Terse or $OBJ->Terse([NEWVAL]) When set, >Data::Dumper will emit single, non-self-referential values as >atoms/terms rather than statements. This means that the $VARn names >will be avoided where possible, but be advised that such output may >not always be parseable by "eval". Hm. In my case, setting $Data::Dumper::Terse was absolutely necessary to make eval work the way I wanted it to. Is there another way to get the original data structure into a variable? In this context, I must admit that the different behaviour of eval's two forms (eval EXPR and eval BLOCK) is a bit mysterious for me. I am grateful for hints. Thanks, Jan -- A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>