diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2001-06-16 21:47:00 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2001-06-16 21:47:00 +0000 |
commit | a0cb39004565ec2396fbdb3f1949b8f13304208e (patch) | |
tree | 67b23b5671a1bf84313263478ddd1c4894a7b7ad /lib/Memoize/Storable.pm | |
parent | 58a21a9b07f5f6666d09bb8c0b9bf9150baca513 (diff) | |
download | perl-a0cb39004565ec2396fbdb3f1949b8f13304208e.tar.gz |
Integrate Memoize 0.64. Few tweaks were required in
the test scripts. Note that the speed and expire*
tests take several dozen seconds to run.
p4raw-id: //depot/perl@10645
Diffstat (limited to 'lib/Memoize/Storable.pm')
-rw-r--r-- | lib/Memoize/Storable.pm | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/lib/Memoize/Storable.pm b/lib/Memoize/Storable.pm new file mode 100644 index 0000000000..ff712aecc4 --- /dev/null +++ b/lib/Memoize/Storable.pm @@ -0,0 +1,61 @@ + +package Memoize::Storable; +use Storable (); +$Verbose = 0; + +sub TIEHASH { + require Carp if $Verbose; + my $package = shift; + my $filename = shift; + my $truehash = (-e $filename) ? Storable::retrieve($filename) : {}; + my %options; + print STDERR "Memoize::Storable::TIEHASH($filename, @_)\n" if $Verbose; + @options{@_} = (); + my $self = + {FILENAME => $filename, + H => $truehash, + OPTIONS => \%options + }; + bless $self => $package; +} + +sub STORE { + require Carp if $Verbose; + my $self = shift; + print STDERR "Memoize::Storable::STORE(@_)\n" if $Verbose; + $self->{H}{$_[0]} = $_[1]; +} + +sub FETCH { + require Carp if $Verbose; + my $self = shift; + print STDERR "Memoize::Storable::FETCH(@_)\n" if $Verbose; + $self->{H}{$_[0]}; +} + +sub EXISTS { + require Carp if $Verbose; + my $self = shift; + print STDERR "Memoize::Storable::EXISTS(@_)\n" if $Verbose; + exists $self->{H}{$_[0]}; +} + +sub DESTROY { + require Carp if $Verbose; + my $self= shift; + print STDERR "Memoize::Storable::DESTROY(@_)\n" if $Verbose; + if ($self->{OPTIONS}{'nstore'}) { + Storable::nstore($self->{H}, $self->{FILENAME}); + } else { + Storable::store($self->{H}, $self->{FILENAME}); + } +} + +sub FIRSTKEY { + 'Fake hash from Memoize::Storable'; +} + +sub NEXTKEY { + undef; +} +1; |