从复杂的Perl哈希结构中获取价值

时间:2018-10-24 10:53:55

标签: perl hash reference hashmap dereference

使用以下代码,我可以从数据库中获取存储在哈希中的数据并打印出来:

use Data::Dumper;
my $fdx = $s->field();   # get Hashreference from Database
print Dumper($fdx);      # print out Hash

(输出的重要部分)如下所示:

$VAR1 = bless( {
     'selectable' => 'true',
     '_PARENT_OBJECT' => bless( {
           'dirtyFlag' => 1,
           'path' => undef,
           'testItems' => [],
           'data' => {
                'TEST_10' => {
                     'atm_rundatahistory' => {
                           '1523964918' => {
                                'atm_prid' => {
                                      'content' => '',
                                      'label' => 'Problem Report IDs',
                                      'raw' => ''
                                 }, ...
                            '1523964410' => {
                                 'atm_prid' => {
                                       'label' => 'Problem Report IDs',
                                       'raw' => '23361234',
                                       'content' => '23361234'
                                  }, ...

'Test_10'是数百个测试之一,'1523964918'是许多Unix时间戳之一,因此基本上是32位整数,但是我不知道哪个时间戳包含的数字。

对于所有测试和Unix时间戳,如果存在,我如何打印/访问最里面的哈希值的'content'(在这种情况下为'23361234')的值?


从现在开始,我将描述我的想法和尝试过的事情,无需进一步阅读该问题。

我认为我正在寻找的代码如下:

foreach my $val($fdx{_PARENT_OBJECT}{data}{"TEST_*"}{atm_rundatahistory}{"********"}{atm_prid}{content}) 
    print("\n$val");

但是我不知道确切的语法,也不知道要为"Test_10"设置哪个占位符,因为有很多测试编号,例如"...Test_132...Test_134"和Unix时间戳可以是任何32位整数,因此我想可以将start用作占位符吗?例如"********"

在网上搜索了几个小时之后,我还没有找到关于如何从复杂的Perl哈希结构访问值的易懂的教程,我猜想有一些简单的语法规则可以知道,即使非常复杂的数据结构而无需付出太多努力。

我已经读过perldoc_perlreftut。如果有任何其他易于理解的教程来解决此类问题,请向我推荐它们。我真的不知道我该如何学会在Perl中处理这种复杂的数据结构。

0 个答案:

没有答案