Book HomeJava and XSLTSearch this book

8.189. Storable

Storable.pm allows you to keep peristent state on your Perl data structures, which include objects of type SCALAR, ARRAY, HASH, and REF. In other words, Storable lets you deal with any Perl types that can be conveniently stored on disk and retrieved at a later time. At the heart of Storable is store, which takes a reference to the object that will be stored and the filename where the information should be written. And, while you're statefully keeping your Perl data on a filesystem, retrieve will open the file where the data is kept so you can work with it. As of Perl 5.8, Storable is shipped with the source kit.

For the cost of a slight header overhead, you can store to an already opened file descriptor using the store_fd routine and retrieve from a file via fd_retrieve. These names aren't imported by default, so you will have to do this explicitly if you need these routines. The file descriptor you supply must be opened for read if you're going to retrieve and for write if you wish to store. For example:

#!/usr/local/bin/perl -w
use Storable;

my $state_file = '/tmp/emp.cache';
my %empdata = (EmployeeNumber => 1, Person => 'Nathan Patwardhan');
 
store(\%empdata, $state_file);
my $h_ref = retrieve($state_file);

Storable implements the following methods.

lock_retrieve

lock_retrieve()

Gets an exclusive lock at the file before writing.

lock_store

lock_store() 

Same as store, except that it gets an exclusive lock at the file before writing.

nlock_store

nlock_store()

Same as nstore(), except that it gets an exclusive lock at the file before writing.

nstore_fd

nstore_fd()

Allows you to store data in network order so it can be shared across platforms. It also stores stringified double values to ensure portability. nstore_fd works the same as store_fd and behaves the same if errors are encountered.

retrieve

retrieve(file)

Takes file as an option and recreates the objects in memory for you; a reference to the object is returned. retrieve returns undef if an I/O error is encountered.

store

store(type, file)

Takes type (HASH, SCALAR, etc.) and writes it to file. store returns undef if an I/O error is encountered.

store_fd

store_fd(type, fh)

Allows you to store type in an existing fh (filehandle). Similarly, you can retrieve data from fh using fd_retrieve. If fhisn't open, both store_fd and fd_retrieve will fail.



Library Navigation Links

Copyright © 2002 O'Reilly & Associates. All rights reserved.