package Audio::Scrobbler::SimilarArtists; use strict; use Memoize; my %cache; sub new { my ($class, %parameters) = @_; my $self = bless ({}, ref ($class) || $class); my %options = ( min_match => 75, cache_time => '1 week', cache_file => '/tmp/audioscrobbler.cache', %parameters, ); $self->{'_options'} = \%options; $self->{cache} = \%cache; tie %{ $self->{cache} } => 'GDBM_File', $self->{_options}->{cache_file}, O_RDWR|O_CREAT, 0666; memoize 'lookup', SCALAR_CACHE => [HASH => \%cache]; return $self; } sub lookup { # same as above, but without caching code: memoize handles that. }