gpt4 book ai didi

Perl 使用 Data::Dumper 持久化数据存储

转载 作者:行者123 更新时间:2023-12-01 07:48:00 25 4
gpt4 key购买 nike

今晚我一直在努力解决这个问题。我已经用谷歌搜索了它,但没有一个例子或我对这些例子的黑客完成它。看起来这应该很容易,但我就是无法理解。这是代码:

#!/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 输出相同,这正是我想要实现的。

我在这里错过了什么?我应该以不同的方式“做”还是应该“评估”,如果是这样,该怎么做?

谢谢你的帮助...

最佳答案

首先,我建议使用 Storable.pm 而不是 Data::Dumper。 Storable 具有卡住和解冻方法,可以将数据结构保存为二进制形式,而无需将其转换为文本并返回。

其次,我还没有尝试过这个,但在我看来,当你“做 $MEMORY”时,你并没有存储 hashref eval 被注释掉了。尝试:

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

关于Perl 使用 Data::Dumper 持久化数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2521142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com