我似乎无法打印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来获取每个键的值?
答案 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.k
和x->k
之间的差异相似。
答案 2 :(得分:3)
要使用hashref中的值,请使用$wss_href->{$_};