我有平面数据文件,其中哈希数据作为内容。现在我希望读取文件数据,并可以将我的代码用作Perl哈希。文件内容如下:
我已将文件内容读取为字符串,但我无法通过读取文件内容来使用$ forum_thread_data var。
请我将它用作哈希数据。
$forum_thread_data{"9"}->{"0000"} = {
'01' => [q~A~, q~~, q~rrdude~, q~How To Sell More To USF's Prospect/Customer Base.~,
q~1~, q~1~, q~02-09-2012~, q~05:00 PM~,
q~2455967.1700~, q~Jerry @ ASI Home Office~, q~00000595~, q~rrdude~,
q~02-24-2012~, q~04:28 PM~, q~2455982.1628~, q~Jerry @ ASI Home Office~,
q~00000595~, q~1~, ],
'02' => [q~A~, q~~, q~rrdude~, q~Dealers MUST BE PROACTIVE and REACH OUT~,
q~1~, q~0~, q~03-02-2012~, q~12:28 PM~,
q~2455989.1228~, q~Jerry @ ASI Home Office~, q~00000595~, q~rrdude~,
q~03-02-2012~, q~12:28 PM~, q~2455989.1228~, q~Jerry @ ASI Home Office~,
q~00000595~, q~1~, ],
'03' => [q~A~, q~~, q~rrdude~, q~Don't Forget To Line-Item The USF Discount!~,
q~1~, q~0~, q~03-09-2012~, q~05:20 PM~,
q~2455996.1720~, q~Jerry @ ASI Home Office~, q~00000595~, q~rrdude~,
q~03-09-2012~, q~05:20 PM~, q~2455996.1720~, q~Jerry @ ASI Home Office~,
q~00000595~, q~1~, ],
'04' => [q~A~, q~~, q~rrdude~, q~Fast & Furious From USFoods!~,
q~1~, q~0~, q~03-15-2012~, q~12:12 PM~,
q~2456002.1212~, q~Jerry @ ASI Home Office~, q~00000595~, q~rrdude~,
q~03-15-2012~, q~12:12 PM~, q~2456002.1212~, q~Jerry @ ASI Home Office~,
q~00000595~, q~1~, ],
'05' => [q~A~, q~~, q~rrdude~, q~RM Dealer Invited to FOUR USF Events!~,
q~1~, q~0~, q~03-15-2012~, q~02:12 PM~,
q~2456002.1412~, q~Jerry @ ASI Home Office~, q~00000595~, q~rrdude~,
q~03-15-2012~, q~02:12 PM~, q~2456002.1412~, q~Jerry @ ASI Home Office~,
q~00000595~, q~1~, ],
};
1;
答案 0 :(得分:1)
这就是eval
command的用途。如果您在字符串中包含整个内容,请说$foo
,您可以执行以下操作:
my %forum_thread_data;
eval $foo;
首先你需要声明哈希。之后,你eval
字符串。
请注意eval
是危险的。你永远不知道文件中可能包含的内容。如果它是一些错误的代码,你将运行它。
如果数据位于没有其他内容的文本文件中,则替代方法是require
或do
该文件。
使用require
,您只能加载一次。可能最好只使用do
,它将读取和执行文件,就像它是代码一样。同样,如果您没有在文件内部,则需要声明变量。
my $forum_thread_data;
do 'foo.dump';
同样的警告适用。如果这是您自己的代码中的Data :: Dumper,Data :: Dump或类似的输出,则应该保存以执行此操作。另请注意,序列化格式比转储出的Perl数据结构更快。