使用以下代码,我可以从数据库中获取存储在哈希中的数据并打印出来:
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中处理这种复杂的数据结构。