home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 December (Special) / PCWorld_2005-12_Special_cd.bin / Bezpecnost / lsti / lsti.exe / framework-2.5.exe / Storable.pm < prev    next >
Text File  |  2005-01-27  |  1KB  |  73 lines

  1. package Memoize::Storable;
  2.  
  3. =head1 NAME
  4.  
  5. Memoize::Storable - store Memoized data in Storable database
  6.  
  7. =head1 DESCRIPTION
  8.  
  9. See L<Memoize>.
  10.  
  11. =cut
  12.  
  13. use Storable ();
  14. $VERSION = 0.65;
  15. $Verbose = 0;
  16.  
  17. sub TIEHASH {
  18.   require Carp if $Verbose;
  19.   my $package = shift;
  20.   my $filename = shift;
  21.   my $truehash = (-e $filename) ? Storable::retrieve($filename) : {};
  22.   my %options;
  23.   print STDERR "Memoize::Storable::TIEHASH($filename, @_)\n" if $Verbose;
  24.   @options{@_} = ();
  25.   my $self = 
  26.     {FILENAME => $filename, 
  27.      H => $truehash, 
  28.      OPTIONS => \%options
  29.     };
  30.   bless $self => $package;
  31. }
  32.  
  33. sub STORE {
  34.   require Carp if $Verbose;
  35.   my $self = shift;
  36.   print STDERR "Memoize::Storable::STORE(@_)\n" if $Verbose;
  37.   $self->{H}{$_[0]} = $_[1];
  38. }
  39.  
  40. sub FETCH {
  41.   require Carp if $Verbose;
  42.   my $self = shift;
  43.   print STDERR "Memoize::Storable::FETCH(@_)\n" if $Verbose;
  44.   $self->{H}{$_[0]};
  45. }
  46.  
  47. sub EXISTS {
  48.   require Carp if $Verbose;
  49.   my $self = shift;
  50.   print STDERR "Memoize::Storable::EXISTS(@_)\n" if $Verbose;
  51.   exists $self->{H}{$_[0]};
  52. }
  53.  
  54. sub DESTROY {
  55.   require Carp if $Verbose;
  56.   my $self= shift;
  57.   print STDERR "Memoize::Storable::DESTROY(@_)\n" if $Verbose;
  58.   if ($self->{OPTIONS}{'nstore'}) {
  59.     Storable::nstore($self->{H}, $self->{FILENAME});
  60.   } else {
  61.     Storable::store($self->{H}, $self->{FILENAME});
  62.   }
  63. }
  64.  
  65. sub FIRSTKEY {
  66.   'Fake hash from Memoize::Storable';
  67. }
  68.  
  69. sub NEXTKEY {
  70.   undef;
  71. }
  72. 1;
  73.