Frage

Ich habe versucht, diese aus für viel zu lang heute Abend Figur. Ich habe es zu Tode gegoogelt und keines der Beispiele oder meine Hacks der Beispiele werden immer es getan. Es scheint so, das ist ziemlich einfach sein sollte, aber ich kann es einfach nicht bekommen. Hier ist der Code:

#!/usr/bin/perl -w
use strict;
use Data::Dumper;

my $complex_variable = {};
my $MEMORY = "$ENV{HOME}/data/memory-file";

$complex_variable->{ 'key' } = 'value';
$complex_variable->{ 'key1' } = 'value1';
$complex_variable->{ 'key2' } = 'value2';
$complex_variable->{ 'key3' } = 'value3';

print Dumper($complex_variable)."TEST001\n";

open M, ">$MEMORY" or die;
print M Data::Dumper->Dump([$complex_variable], ['$complex_variable']);
close M;

$complex_variable = {};
print Dumper($complex_variable)."TEST002\n";

# Then later to restore the value, it's simply:
do $MEMORY;
#eval $MEMORY;

print Dumper($complex_variable)."TEST003\n";   

Und hier ist meine Ausgabe:

$VAR1 = {
         'key2' => 'value2',
         'key1' => 'value1',
         'key3' => 'value3',
         'key' => 'value'
       };
TEST001
$VAR1 = {};
TEST002
$VAR1 = {};
TEST003    

Alles, was ich lese, sagt, dass die TEST003 Ausgabe an dem TEST001 Ausgang identisch aussehen soll das ist genau das, was ich zu erreichen versuchen.

Was bin ich hier? Soll ich „tun“ ing anders sein oder sollte ich „eval“ sein ing statt und wenn ja, wie?

Danke für jede Hilfe ...

War es hilfreich?

Lösung

Wir haben alle diese Abende! Versuchen Sie:

$complex_variable = do $MEMORY || die "Bad data";

Andere Tipps

Als erstes würde ich mit Storable.pm statt Daten empfehlen :: Dumper. Storable hat Frost & Auftau-Verfahren, die ein Datum stucture bewahren können es binäre Form ist, ohne es zu & zurück von Text zu übersetzen.

Zweitens, ich habe nicht versucht, aber es scheint nicht zu mir Sie die hashref sind zu speichern, wenn Sie „$ MEMORY do“ Die eval wird als Kommentar gekennzeichnet. Versuchen Sie:

$complex_variable = eval $MEMORY;
print Dumper($complex_variable)."TEST003\n";

Ich neige dazu, wie DBM :: Tief für diese . Allerdings habe ich ein komplettes Kapitel über „Leichtbau Persistence“ in Mastering Perl dass die Gespräche über alles kurz ein Datenbank-Server.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top