...
- It is the only approach which allows you to directly serialize the nested hash strcture to file and back through a seamless interface.
- 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
...
storesa flag
...
indicating
...
whether
...
it
...
has
...
stored
...
it
...
in
...
a
...
machine-independent
...
format
...
or
...
not).
...