summaryrefslogtreecommitdiff
path: root/lib/Memoize/Storable.pm
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2001-06-16 21:47:00 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2001-06-16 21:47:00 +0000
commita0cb39004565ec2396fbdb3f1949b8f13304208e (patch)
tree67b23b5671a1bf84313263478ddd1c4894a7b7ad /lib/Memoize/Storable.pm
parent58a21a9b07f5f6666d09bb8c0b9bf9150baca513 (diff)
downloadperl-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.pm61
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;