データ:: Dumperのを使用してPerlの永続的なデータストレージ
-
22-09-2019 - |
質問
私は長い今夜への道のために、このアウトを理解しようとしています。私は例の死とnoneにそれをGoogleで検索しているか、例の私のハックは、それが行われてきています。これはかなり簡単なはずが、私はちょうどそれを得ることができないように思えます。ここでは、コードは次のとおりです。
#!/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出力と同じに見えるべきであると述べています。
私はここで何をしないのですか?私はあるべき「やる」は異なるINGのか、私の代わりに、どのようにその場合INGの「evalの」をすべきですか?
任意の助けてくれてありがとう...
解決
私たちは、これらすべての夜を持っています!試してみてください。
$complex_variable = do $MEMORY || die "Bad data";
他のヒント
まず、私はStorable.pm代わりのデータ:: Dumperのを使用することをお勧めします。 Storableがテキストからに&戻ってそれを変換せずにバイナリ形式のITでデータstuctureを保存することができます凍結&解凍方法があります。
第二に、私はこれを試していないが、あなたが「$ MEMORYを行う」にevalがコメントアウトされたときにハッシュリファレンスを格納している私には表示されません。試してみてください。
$complex_variable = eval $MEMORY;
print Dumper($complex_variable)."TEST003\n";
私は DBMのように傾向がある::ディープはこのためを。しかし、私はAのすべての短い程度マスタリングのPerl にその会談で「軽量持続性」についての完全な章を持っていますデータベースサーバます。
所属していません StackOverflow