[Cologne-pm] persistent memoize

A. Pagaltzis pagaltzis at gmx.de
Sat Feb 18 02:46:53 PST 2006


Hi Patrick,

* Krusenotto, Patrick <pkrusenotto at cosa.de> [2006-02-17 09:20]:
>Mein Problem ist, das ich als gecachte Daten einen String der Form 
>'Hash(xxxxx)' geliefert bekomme. Leider gestattet DB_File aber nicht die 
>Verwendung eines LIST_CACHE.

das hat mit LIST_CACHE vs SCALAR_CACHE nix zu tun, sondern liegt
daran, dass du eine Referenz zurückgibst, was bei (fast) keinem
DBM-Modul »out of the box« funktioniert.

>Was kann ich da machen? Eine Datenbank kann ich bei der
>Anwendung aber nicht voraussetzen. Ich bin aber sicher, daß da
>irgendeine Option gigt, die vielleicht einer von Euch kennt.

Nimm MLDBM oder DBM::Deep, damit kannst du geschachtelte
Datenstrukturen im tied hash unterbringen. Im Falle von MLDBM
wäre das zB

    use MLDBM qw( DB_File Storable );
    tie my %cache => 'MLDBM', @sonst_alles_das_gleiche;

Bei DBM::Deep musst du die `tie`-Syntax leicht anpassen.

Gruss,
-- 
#Aristoteles
*AUTOLOAD=*_;sub _{s/(.*)::(.*)/print$2,(",$\/"," ")[defined wantarray]/e;$1};
&Just->another->Perl->hacker;


More information about the Cologne-pm mailing list