Perl打印hashref值

时间:2014-04-09 17:21:49

标签: perl

我似乎无法打印hashref的值。

我可以打印钥匙:

 foreach (sort keys %$wss_href) {
     print "$_\n";
 }

我想为每个键打印值: 所以我试过了:

 print "$_ => $wss_href{$_}\n";
 print "$_ => $%$wss_href{$_}\n";

它一直给我一个错误Global symbol "%wss_href" requires explicit package name

如何使用deference hashref来获取每个键的值?

3 个答案:

答案 0 :(得分:5)

如果它是%NAME的哈希值,那么它是%{REF}的哈希引用。

如果它是$NAME{EXPR}的哈希值,那么它是${REF}{EXPR}的哈希引用。

看模式?

您正在寻找以下内容:

for (sort keys %{ $wss_href }) {
    print "$_ => ${ $wss_href }{$_}\n";
}

如果引用表达式只是一个变量,则可以省略curlies。

for (sort keys %$wss_href) {
    print "$_ => $$wss_href{$_}\n";
}

但是你也可以使用更清晰的语法。

for (sort keys %$wss_href) {
    print "$_ => $wss_href->{$_}\n";
}

答案 1 :(得分:4)

您需要箭头语法:$wss_href->{$_}

$x{k}$x->{k}之间的差异与C中x.kx->k之间的差异相似。

答案 2 :(得分:3)

要使用hashref中的值,请使用$wss_href->{$_};