Cache-Weak
view release on metacpan or search on metacpan
lib/Cache/Weak.pm view on Meta::CPAN
#
# $Id: Weak.pm 22 2008-04-22 13:28:19Z esobchenko $
package Cache::Weak;
use strict;
use warnings;
use version; our $VERSION = qv('1.0.3');
use Carp qw/carp croak/;
use Scalar::Util qw/weaken/;
use constant {
DEFAULT_NAMESPACE => '_',
DEFAULT_AUTO_PURGE_INTERVAL => 1000,
DEFAULT_AUTO_PURGE => 1,
};
# data is stored in the form: $cache_data{$namespace}{$key} = $object
my %cache_data = ();
my %cache_meta = ();
lib/Cache/Weak.pm view on Meta::CPAN
sub set {
my ( $self, $key, $object ) = @_;
croak "attempting to set non-reference value" unless ref $object;
# is it time to purge cache from dead objects?
if ( $self->auto_purge ) {
$self->purge unless ( $self->_inc_count % $self->auto_purge_interval );
}
weaken ( $cache_data{ $self->namespace }{$key} = $object );
return 1;
}
sub remove {
my ( $self, $key ) = @_;
delete $cache_data{ $self->namespace }{$key};
return 1;
}
# XXX "exists" actually means "defined" in our case
lib/Cache/Weak.pm view on Meta::CPAN
If this option is true, then the auto purge interval will be checked on every C<set()>.
=back
=head1 DEPENDENCIES
This module requires weak references support in your system.
To find out if your system supports weak references, you can run this on the command line:
perl -e 'use Scalar::Util qw(weaken)'
If you get an error message about weak references not being implemented, this module would
not work.
=head1 SEE ALSO
L<http://github.com/esobchenko/cache-weak/> this module on GitHub.
L<http://en.wikipedia.org/wiki/Weak_reference> about weak references.
( run in 0.311 second using v1.01-cache-2.11-cpan-65fba6d93b7 )