【发布时间】:2019-01-29 22:59:41
【问题描述】:
我正在使用 XML::Simple 将一些 XML 加载到基本上包含文件/目录信息的数据结构中。我遇到的问题是遍历生成的数据结构。我可以通过以下方式获取我需要的数据:
$lsResults->{file}
如果我使用 Dumper 转储该结构,我看到的内容类似于:
$VAR1 = [
{
'owner' => 'reps_hd',
'replication' => '3',
'blocksize' => '134217728',
'permission' => '-rw-r-----',
'path' => '/projects/mdataeng/feeds/customer_care/mail_q_grid_data_20110816.dat',
'modified' => '2011-08-18T21:41:11+0000',
'size' => '625182',
'group' => 'mdataeng',
'accesstime' => '2011-08-18T21:41:11+0000'
},
{
'owner' => 'reps_hd',
'replication' => '3',
'blocksize' => '134217728',
'permission' => '-rw-r--r--',
'path' => '/projects/mdataeng/feeds/customer_care/mail_q_grid_data_20110817.dat',
'modified' => '2011-08-19T23:29:06+0000',
'size' => '600199',
'group' => 'mdataeng',
'accesstime' => '2011-08-19T23:29:06+0000'
},
....
这基本上不是一个哈希引用数组吗?我知道我可以通过以下方式引用第一个元素中的数据:
print Dumper($lsResults->{file}[0]);
$VAR1 = {
'owner' => 'reps_hd',
'replication' => '3',
'blocksize' => '134217728',
'permission' => '-rw-r-----',
'path' => '/projects/mdataeng/feeds/customer_care/mail_q_grid_data_20110816.dat',
'modified' => '2011-08-18T21:41:11+0000',
'size' => '625182',
'group' => 'mdataeng',
'accesstime' => '2011-08-18T21:41:11+0000'
};
所以,问题是,我如何遍历 $lsResults->{file} 结构中的所有结果来获取每个条目的“路径”键值?我知道我可以通过执行以下操作手动引用它:
print $lsResults->{file}[0]->{path};
print $lsResults->{file}[1]->{path};
print $lsResults->{file}[2]->{path};
print $lsResults->{file}[3]->{path};
但我似乎无法弄清楚如何迭代
$lsResults->{file}
我到底做错了什么?
【问题讨论】:
标签: perl