RE: Restoring Dumped Values

"Eric Robertson" <[email protected]>
Newsgroups gmane.comp.lang.perl.active-perl
Message-ID <19D4F60D28A94146A467C077DE2864EC@macbookXP>
Thanks for the suggestion. I've used DB_File quite a lot so using that would
have been a possibility but unfortunately because it's not a simple hash
that I'm dumping it wouldn't work. I've read that there is a possible way of
getting round this using MLDBM but I've not followed this up as Storable
suggested by Bill Luebkert does what I want.

I still want to have a text file of my hash so I'm still going to use Dumper
for that.

Eric
 

> -----Original Message-----
> From: [email protected] 
> [mailto:[email protected]] On 
> Behalf Of Curtis Leach
> Sent: 27 September 2010 19:05
> To: [email protected]
> Subject: RE: Restoring Dumped Values
> 
> I believe you can tie a hash directly to a file, hiding all 
> the dirty work entirely.  This should make it sharable 
> between programs.  But I can't remember how readable the file 
> is to humans.  It's been a while since I've done this.
> 
> use SDBM_File;
> my (%tie_db, %hash);
> tie(%tie_db, 'SDBM_File', $file, O_RDONLY, 0666)
>    or die "Can't open SDBM_FILE $file: $!\n" ; %hash = %tie_db;
> untie(%tie_db);       # Empties out %tie_db!
> 
> 
> For updates, replace "O_RDONLY" with "O_RDWR|O_CREAT"
> 
> Just be aware that there is a performance drain as each time 
> the hash changes the file gets updated while the hash is tied 
> to the file.  If you are going to have multiple programs 
> update the hash file, you're going to have to implement a 
> semaphore to lock things so that only one program can update 
> a file at a time.
> 
> Curtis
> 
>  
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On 
> Behalf Of Bill Luebkert
> Sent: Sunday, September 26, 2010 7:01 PM
> To: Eric Robertson
> Cc: [email protected]
> Subject: Re: Restoring Dumped Values
> 
> On 9/26/2010 3:12 PM, Eric Robertson wrote:
> > I've produced a complicated hash that has as its values anonymous
> hashes and I want to store the hash in a text file and then 
> in another program use this text file to reconstitute the 
> original hash. Using Data::Dumper I've succeeded with the 
> first part and produced the text file with 'print OUT Dumper 
> (%hash)' but using eval with the contents of the file doesn't 
> reproduce the original hash file.
> >
> > Am I attempting the impossible, or if not how should I set about
> reconstituting to the original hash?
> 
> Maybe try Storable (store retrieve / freeze thaw).
> _______________________________________________
> ActivePerl mailing list
> [email protected]
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
> 
> 
> _______________________________________________
> ActivePerl mailing list
> [email protected]
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
> No virus found in this incoming message.
> Checked by AVG - www.avg.com
> Version: 9.0.856 / Virus Database: 271.1.1/3160 - Release 
> Date: 09/26/10 08:01:00
> 


_______________________________________________
ActivePerl mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.