Remove also the lib$Foo.def, not just $Foo.def.
[p5sagit/p5-mst-13.2.git] / lib / Memoize / Storable.pm
CommitLineData
a0cb3900 1package Memoize::Storable;
9038e305 2
3=head1 NAME
4
5Memoize::Storable - store Memoized data in Storable database
6
7=head1 DESCRIPTION
8
9See L<Memoize>.
10
11=cut
12
a0cb3900 13use Storable ();
14$Verbose = 0;
15
16sub TIEHASH {
17 require Carp if $Verbose;
18 my $package = shift;
19 my $filename = shift;
20 my $truehash = (-e $filename) ? Storable::retrieve($filename) : {};
21 my %options;
22 print STDERR "Memoize::Storable::TIEHASH($filename, @_)\n" if $Verbose;
23 @options{@_} = ();
24 my $self =
25 {FILENAME => $filename,
26 H => $truehash,
27 OPTIONS => \%options
28 };
29 bless $self => $package;
30}
31
32sub STORE {
33 require Carp if $Verbose;
34 my $self = shift;
35 print STDERR "Memoize::Storable::STORE(@_)\n" if $Verbose;
36 $self->{H}{$_[0]} = $_[1];
37}
38
39sub FETCH {
40 require Carp if $Verbose;
41 my $self = shift;
42 print STDERR "Memoize::Storable::FETCH(@_)\n" if $Verbose;
43 $self->{H}{$_[0]};
44}
45
46sub EXISTS {
47 require Carp if $Verbose;
48 my $self = shift;
49 print STDERR "Memoize::Storable::EXISTS(@_)\n" if $Verbose;
50 exists $self->{H}{$_[0]};
51}
52
53sub DESTROY {
54 require Carp if $Verbose;
55 my $self= shift;
56 print STDERR "Memoize::Storable::DESTROY(@_)\n" if $Verbose;
57 if ($self->{OPTIONS}{'nstore'}) {
58 Storable::nstore($self->{H}, $self->{FILENAME});
59 } else {
60 Storable::store($self->{H}, $self->{FILENAME});
61 }
62}
63
64sub FIRSTKEY {
65 'Fake hash from Memoize::Storable';
66}
67
68sub NEXTKEY {
69 undef;
70}
711;