1
A
回答
5
要从hashref获取元素,你走正常的代码得到一个哈希元素:$foo{'bar'}
,并更换名称的哈希的,不包括印记,与hashref:$$hash{'bar'}
。您的%
只能用于取消引用完整散列,因为在每种情况下,不仅仅是一个元素。
更多帮助提示http://perlmonks.org/?node=References+quick+reference。
3
也许这将帮助你理解为什么这是错的......
$hash = {a => 2}; #Works: $hash is a reference to the hash
%foo = %{$hash}; #Now, we've dereferenced the hash to %foo
# Wherever we have "$hash", we can now use "foo"...
print %foo{a}; #Whoops! Doesn't work.
print %hash{a}; #And, neither did this!
print $foo{a}; #No problem! Use '$" when talking about a single hash element
print ${$hash}{a} #Same as above.
print each %foo; #Each takes a hash (with "%" sign)
print each %{$hash}; #Same as above.
print $hash->{a} #Syntactic Sugar: Same as ${$hash{a}} or $$hash{a}
1
呀,就像print %hash{a}
不即使each(%hash)
做工作。
each(%hash) ==> each(%{ $ref })
print($hash{a}) ==> print(${ $ref }{a})
0
您错过了查找' - >'。
print %{$hash}{a};
应该是:
print %{$hash}->{a};
你声明为$但随后尝试转换为哈希和检索的价值,不知道为什么。
只是检索像这样:
print $hash->{a};
我个人的偏好,当谈到散列:
$hash1->{a} = 1;
print $hash1->{a}, "\n"; # prints '1'
多级:
$hash2->{a}{a} = 1;
$hash2->{a}{b} = 2;
print $hash2->{a}{a}, "\n"; # prints '1'
print $hash2->{a}{b}, "\n"; # prints '2'
循环:
while (my ($key, $value) = each %{$hash1})
{
print $key, "\n"; # prints 'a'
print $value, "\n"; # prints '1'
}
+0
'print%{$ hash} - > {a};'实际上并不是有效的,尽管它发生了很长时间的事故。在最近的perls上,它会给出警告“使用散列作为参考已被弃用” – ysth
相关问题
- 1. 引用Perl哈希
- 2. 关于在Perl复杂哈希
- 3. perl不是哈希引用
- 4. Perl - 取消引用哈希
- 5. 哈希哈希在Perl中
- 6. Perl哈希哈希
- 7. 关于哈希
- 8. 关于哈希
- 9. 哈希在Perl
- 10. Perl的哈希引用在线程
- 11. 在Perl中传递哈希引用
- 12. 在Perl中引用散列的哈希
- 13. 哈希(Multihash?)索引(Perl)
- 14. Perl中的哈希和哈希引用有什么区别?
- 15. Perl哈希对同一哈希值内的哈希值的引用
- 16. 关于二次在哈希
- 17. Perl数组和哈希引用处理
- 18. Perl测试假哈希引用返回
- 19. perl哈希引用的参考
- 20. Perl哈希散列解引用
- 21. Perl:哈希引用访问键阵列
- 22. Perl的哈希
- 23. 如何引用和间接引用哈希用于子程序在Perl
- 24. 如何在Perl中引用哈希引用中的标量?
- 25. Perl按哈希值排序哈希
- 26. 哈希的Perl嵌套哈希
- 27. 哈希的Perl哈希问题
- 28. 哈希打印表哈希perl
- 29. Perl多哈希与单哈希
- 30. 哈希的Perl哈希问题
不是问题的直接答案,而是'print $ hash - > {a};'起作用。 –