use AutoLoader;
use vars qw($canonical $forgive_me $VERSION);
-$VERSION = '2.05';
+$VERSION = '2.07';
*AUTOLOAD = \&AutoLoader::AUTOLOAD; # Grrr...
#
return $self;
}
+1;
+__END__
+
=head1 NAME
Storable - persistence for Perl data structures
below for an example using a L<Safe> compartment for deserialization
of CODE references.
+If C<$Storable::Deparse> and/or C<$Storable::Eval> are set to false
+values, then the value of C<$Storable::forgive_me> (see below) is
+respected while serializing and deserializing.
+
=head1 FORWARD COMPATIBILITY
This release of Storable can be used on a newer version of Perl to
Serialization of CODE references and deserialization in a safe
compartment:
+=for example begin
+
use Storable qw(freeze thaw);
use Safe;
use strict;
my $safe = new Safe;
- # permitting the "require" opcode is necessary when using "use strict"
+ # because of opcodes used in "use strict":
$safe->permit(qw(:default require));
local $Storable::Deparse = 1;
local $Storable::Eval = sub { $safe->reval($_[0]) };
- my $serialized = freeze(sub { print "42\n" });
+ my $serialized = freeze(sub { 42 });
my $code = thaw($serialized);
- $code->(); # prints 42
+ $code->() == 42;
+
+=for example end
+
+=for example_testing
+ is( $code->(), 42 );
=head1 WARNING
=head1 BUGS
-You can't store GLOB, CODE, FORMLINE, etc.... If you can define
-semantics for those operations, feel free to enhance Storable so that
-it can deal with them.
+You can't store GLOB, FORMLINE, etc.... If you can define semantics
+for those operations, feel free to enhance Storable so that it can
+deal with them.
The store functions will C<croak> if they run into such references
unless you set C<$Storable::forgive_me> to some C<TRUE> value. In that