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;