summaryrefslogtreecommitdiff
path: root/lib/Memoize/ExpireTest.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Memoize/ExpireTest.pm')
-rw-r--r--lib/Memoize/ExpireTest.pm42
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/Memoize/ExpireTest.pm b/lib/Memoize/ExpireTest.pm
new file mode 100644
index 0000000000..1c889ed934
--- /dev/null
+++ b/lib/Memoize/ExpireTest.pm
@@ -0,0 +1,42 @@
+
+# This is just for testing expiration semantics.
+# It's not actually a very good example of how to write
+# an expiration module.
+#
+# If you are looking for an example, I recommend that you look at the
+# simple example in the Memoize::Expire documentation, or at the
+# code for Memoize::Expire itself.
+#
+# If you have questions, I will be happy to answer them if you
+# send them to mjd-perl/memoize+@plover.com.
+
+package Memoize::ExpireTest;
+
+my %cache;
+
+sub TIEHASH {
+ my ($pack) = @_;
+ bless \%cache => $pack;
+}
+
+sub EXISTS {
+ my ($cache, $key) = @_;
+ exists $cache->{$key} ? 1 : 0;
+}
+
+sub FETCH {
+ my ($cache, $key) = @_;
+ $cache->{$key};
+}
+
+sub STORE {
+ my ($cache, $key, $val) = @_;
+ $cache->{$key} = $val;
+}
+
+sub expire {
+ my ($key) = @_;
+ delete $cache{$key};
+}
+
+1;