我有一个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'
}
}
}
}
首先,使用初始化哈希my %hash = (...);
(请注意括号,而不是花括号)。使用{}
声明您已完成的哈希引用。你应该总是use strict;
和use warnings;
。
要回答这个问题:
for my $resultHash_entry (keys %hash){
print "$hash{$resultHash_entry}->{vuln_soft}{prod}{name}\n";
print "$hash{$resultHash_entry}->{vuln_soft}{prod}{vendor}\n";
}
...可以稍微简化为:
for my $resultHash_entry (keys %hash){
print "$hash{$resultHash_entry}{vuln_soft}{prod}{name}\n";
print "$hash{$resultHash_entry}{vuln_soft}{prod}{vendor}\n";
}
因为Perl始终肯定会知道任何比第一个更深的条目始终是引用,所以->
这里不需要deref运算符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句