Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. It is the only approach which allows you to directly serialize the nested hash strcture to file and back through a seamless interface.
  2. It is implemented in C which should give some performance advantage over the other two modules implemented in Perl.

 I  I have already tested this approach in JKFlow and it successfully marshalls and unmarshalls the complex nested hash based data strcutures in JKFlow by simply passing a reference to the root of the nested structure to its component sub-routines. Follwoing is the description of how to use the module.

...

Usage of the Storable Module 

...

Storable

...

is

...

a

...

C

...

extension

...

module

...

for

...

serializing

...

data

...

directly

...

to

...

files

...

and

...

is

...

the

...

fastest

...

of

...

the

...

three

...

approaches.

...

The

...

store

...

function

...

takes

...

a

...

reference

...

to

...

a

...

data

...

structure

...

(the

...

root)

...

and

...

the

...

name

...

of

...

a

...

file.

...

The

...

retrieve

...

method

...

does

...

the

...

converse:

...

given

...

a

...

filename,

...

it

...

returns

...

the

...

root:

Code Block


use Storable;
$a = [100, 200, {'foo' => 'bar'}];
eval {
    store($a, 'test.dat');
};
print "Error writing to file: $@" if $@;
$a = retrieve('test.dat');

If you have more than one structure to stuff into a file, simply put all of them in an anonymous array and pass this array's reference to store.

You can pass an open filehandle to store_fd instead of giving a filename to store. The functions nstore and nstore_fd can be used for storing the data in "network" order, making the data machine-independent. When you use retrieve or retrieve_fd, the data is automatically converted back to the native machine format (while storing, the module stores astoresa flag indicating whether it has stored it in a machine-independent format or not).