The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package WWW::2ch::Cache;
use strict;

use Storable qw(freeze thaw);

use WWW::2ch::Cache::File;

sub new {
    my $class = shift;
    my $cache = shift;

    my $self = bless {}, $class;

    if (ref($cache) =~ /^Cache::/) {
	$self->{cache} = $cache;
    } elsif ($cache) {
	$self->{cache} = WWW::2ch::Cache::File->new($cache);
    }
    $self;
}

sub set {
    my ($self, $key, $data) = @_;
    return unless $self->{cache};
    $self->{cache}->set($key, freeze $data);
}

sub get {
    my ($self, $key) = @_;
    return +{} unless $self->{cache};

    my $data = $self->{cache}->get($key);
    return +{} unless $data;
    thaw $data;
}

1;