Я пытался выяснить это на пути к длинной ночи. Я погуглил его до смерти, и ни один из примеров или мои взломы примеров не сделали этого. Кажется, это должно быть довольно легко, но я просто не могу этого понять. Вот код:
#!/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";
А вот мой вывод:
$VAR1 = {
'key2' => 'value2',
'key1' => 'value1',
'key3' => 'value3',
'key' => 'value'
};
TEST001
$VAR1 = {};
TEST002
$VAR1 = {};
TEST003
Все, что я читаю, говорит о том, что вывод TEST003 должен выглядеть идентично выводу TEST001, и это именно то, чего я пытаюсь достичь.
Что мне здесь не хватает? Должен ли я «делать» по-другому или вместо этого «оценивать», и если да, то как?
Спасибо за любую помощь ...