【发布时间】:2016-07-22 18:13:46
【问题描述】:
我有一个 3 维散列,我需要从中提取数据。我需要在 vuln_soft-> prod 下提取名称和供应商。到目前为止,我设法使用以下代码提取“cve_id”:
foreach my $resultHash_entry (keys %hash){
my $cve_id = $hash{$resultHash_entry}{'cve_id'};
}
有人可以提供有关如何提取名称和供应商的解决方案。提前致谢。
%hash = {
'CVE-2015-6929' => {
'cve_id' => 'CVE-2015-6929',
'vuln_soft' => {
'prod' => {
'vendor' => 'win',
'name' => 'win 8.1',
'vers' => {
'vers' => '',
'num' => ''
}
},
'prod' => {
'vendor' => 'win',
'name' => 'win xp',
'vers' => {
'vers' => '',
'num' => ''
}
}
},
'CVE-2015-0616' => {
'cve_id' => 'CVE-2015-0616',
'vuln_soft' => {
'prod' => {
'name' => 'unity_connection',
'vendor' => 'cisco'
}
}
}
}
【问题讨论】:
-
您能粘贴您的实际数据吗?你显示的有 } 没有对应的 {
-
实际数据超过1K行。我会尝试在问题字段中修复它。
-
要从多维哈希中提取数据,请使用这种语法:perl -E '%h=(a=>{b=>1});说 $h{a}{b}'。另见perldsc
-
这个哈希是从哪里来的。这看起来很可疑,就像您使用 XML::Simple 解析了 XML
-
my $name = $hash{$resultHash_entry}{vuln_soft}{prod}{name}