繁体   English   中英

如何在 perl 中打印 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM