2014-04-09 201 views
2

我似乎无法打印hashref的值。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

我该如何推理hashref来获取每个键的值?

回答

4

如果它是为%NAME散列x.kx->k之间的差异,这是为%{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僧侣链接。 –

4

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

$x{k}$x->{k}之间的区别是类似于C

3

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