【问题标题】:Perl - How to read hash data and use as hash dataPerl - 如何读取哈希数据并用作哈希数据
【发布时间】:2015-04-25 15:33:23
【问题描述】:

我有以哈希数据作为内容的平面数据文件。现在我希望读取文件数据,并可以将其用作 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;

【问题讨论】:

    标签: perl file hash


    【解决方案1】:

    这就是eval command 的用途。如果您将整个内容放在一个字符串中,比如说$foo,您可以执行以下操作:

    my %forum_thread_data;
    eval $foo;
    

    首先你需要声明哈希。之后,你 eval 字符串。

    请注意eval 很危险。您永远不知道文件中可能包含什么。如果是一些不好的代码,你会运行它。


    如果数据在一个没有其他内容的文本文件中,则可以选择requiredo 文件。

    使用require,您只能加载一次。可能最好只使用do,它将像代码一样读取和执行文件。同样,如果文件中没有该变量,则需要声明该变量。

    my $forum_thread_data;
    do 'foo.dump';
    

    同样的警告也适用。如果这是来自您自己的代码的 Data::Dumper、Data::Dump 或类似的输出,则应保存以执行此操作。另请注意,序列化格式比转储 Perl 数据结构更快。

    【讨论】:

      猜你喜欢
      • 2012-03-30
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      • 1970-01-01
      • 2020-07-19
      相关资源
      最近更新 更多