![](/img/trans.png)
[英]In Perl, how can I print the key corresponding to the maximum value in a hash?
[英]How to print key value of hash reference in perl?
我正在使用一个名为 Nmap::Parser 的 perl 模块,并在纠结如何处理 hash 引用,我对这些不熟悉。 调用此模块中的函数之一的指令如下:
对 scripts() 的基本调用会返回为此端口运行的 NSE 脚本的名称列表。 如果给出 $name,它会返回对 hash 的引用,其中包含具有该名称的脚本的“输出”和“内容”键,如果该脚本未运行,则返回 undef。 “输出”键的值是脚本的文本 output。 “contents”键的值是基于 NSE 脚本的 XML output 的数据结构。
我应该如何访问这些键值,我尝试了以下方法:
my $script = $service->scripts();
foreach my $key ( keys %$script) {
print $key, " => ", $script->{$key},"\n";
foreach my $seckey ( keys %$key ) {
print $seckey, " => ", $key->{$seckey},"\n";
}
}
这是我的 output:
ldap-rootdse
keys
返回字符串,所以$key
是字符串,所以keys %$key
和$key->{$seckey}
是错误的。
如果你有一个 HoH,你想要
for my $key ( keys %$script ) {
my $val = $script->{$key};
for my $inner_key ( keys %$val ) { # %$val, not %$key
my $inner_val = $val->{ $inner_key }; # $val, not $key
...
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.