Perl打印哈希引用值

4
我发现无法打印哈希引用的值。
我可以像这样打印键:
```perl print keys %$hashref; ```
 foreach (sort keys %$wss_href) {
     print "$_\n";
 }

我希望能够打印出每个键的值: 因此我尝试了以下代码:
 print "$_ => $wss_href{$_}\n";
 print "$_ => $%$wss_href{$_}\n";

它一直给我一个错误:全局符号"%wss_href"需要显式包名称

如何解引用哈希引用以获取每个键的值?

3个回答

10

如果对于哈希表而言是%NAME,那么对于哈希表引用就是%{REF}

如果对于哈希表而言是$NAME{EXPR},那么对于哈希表引用就是${REF}{EXPR}

明白规律了吗?

你需要寻找以下内容:

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

如果引用表达式只是一个变量,那么大括号可以省略。

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

但是您也可以使用更简洁的语法。

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

1
perllol 是我读过的最好的 Perl 文档。perlreftut 也不错。其他的有点枯燥。感谢提供 Perl Monks 的链接。 - jaypal singh

4

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

$x{k}$x->{k}之间的区别类似于C语言中x.kx->k之间的区别。


3
为了获取哈希引用中某个值,请使用$wss_href->{$_};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接