The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Quiq::Storable - Perl-Datenstrukturen persistent speichern

BASE CLASS

Quiq::Object

DESCRIPTION

Die Klasse ist ein objektorientierter Wrapper für das Core-Modul Storable, speziell für die Funktionen freeze(), thaw(), clone().

METHODS

Klassenmethoden

clone() - Deep Copy einer Datenstruktur

Synopsis

  $cloneRef = Quiq::Storable->clone($ref);

freeze() - Serialisiere Datenstruktur zu Zeichenkette

Synopsis

  $str = Quiq::Storable->freeze($ref);

thaw() - Deserialisiere Zeichenkette zu Datenstruktur

Synopsis

  $ref = Quiq::Storable->thaw($str);

memoize() - Cache Datenstruktur in Datei

Synopsis

  $ref = Quiq::Storable->memoize($file,$sub);
  $ref = Quiq::Storable->memoize($file,$timeout,$sub);

Arguments

$file

Pfad der Cachedatei.

$timeout

Dauer in Sekunden, die die Cachdatei gültig ist. Falls nicht angegeben oder undef, ist die Cachdatei unbegrenzt lange gültig. Ist $timeout negativ, verfällt die Cachdatei, wenn sie abs($timeout) Sekunden nicht zugegriffen wurde (mit jedem Aufruf wird die Datei in diesem Fall getouched).

$sub

Subroutine, die die Datenstruktur aufbaut und eine Referenz auf diese zurückliefert.

Description

Existiert Datei $file, deserialisiere die enthaltene Datenstruktur. Andernfalls erzeuge die Datenstruktur durch Aufruf der Subroutine $sub und speichere das Resultat in Datei $file. In beiden Fällen liefere eine Referenz auf die Datenstuktur zurück.

Soll die Datenstuktur erneut generiert werden, genügt es, die Datei zuvor zu löschen.

Example

Cache Hash (hier mit zyklischer Struktur):

  my $cacheFile = '~/tmp/test5674';
  my $objectH = Quiq::Storable->memoize($cacheFile,sub {
      my $h;
      $h->{'A'} = [1,undef];
      $h->{'B'} = [2,undef];
      $h->{'A'}[1] = \$h->{'B'};
      $h->{'B'}[1] = \$h->{'A'};
      return $h;
  });

VERSION

1.188

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2020 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.