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

use File::Path;

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

    my $self = bless {dir => $dir}, $class;
    unless (-e $dir && -d _) {
	mkdir($dir, 0755) or die "mkdir $dir: $!";
    }
    $self;
}

sub set {
    my ($self, $key, $data) = @_;

    my $path = $self->{dir} . "/$key";
    my $dir = $path;
    $dir =~ s|/[^/]*$|/|;
    mkpath($dir, 0, 0755);

    open my $fh, ">$path" or die "ope $path: $!";
    print $fh $data;
    close($fh);
}

sub get {
    my ($self, $key) = @_;

    my $path = $self->{dir} . "/$key";
    open my $fh, "$path" or return;
    my $data = join('', <$fh>);
    close($fh);
    $data;
}
1;