我有一个哈希:
my $normal_hash = {a => '10',};
print $normal_hash; # prints HASH(0x......)
我想通过以下方式引用此哈希:
my $var = 'normal_hash';
print $$var;
这是错误的,但为了得到相同的结果我需要放在那里?
答案 0 :(得分:3)
您正尝试使用符号引用。
不要这样做 。
有关符号引用的更多信息,请参阅我对How do I use symbolic references in Perl的回复。最初的提问者询问了关于typeglobs的问题,所以关于它们的帖子也有一些信息。
答案 1 :(得分:1)
尝试:
my $normal_hash = {a => '10',};
print $normal_hash, "\n";
my $var = $normal_hash;
print $var, "\n";
您所做的事情被称为符号参考,并不是最佳做法。
要查看哈希值use Data::Dumper;
use Data::Dumper;
print "\$normal_hash:\n", Dumper $normal_hash;
答案 2 :(得分:0)
我希望这能解释原则:
1: $hsh = { a => 1, b => 2};
2: print "Original Hash: $hsh\n";
3: my $name = 'hsh';
4: print "Hash Name: $name\n";
5: $ref = eval "\$$name";
6: print "Hash resolved from variable name: $ref\n";
下面...
第1行定义你的哈希值。
第3行定义$ name,其中包含哈希的名称。
第5行将该名称从哈希变量的名称转换为您想要的哈希引用。
...输出
Original Hash: HASH(0x8bb8880)
Hash Name: hsh
Hash resolved from variable name: HASH(0x8bb8880)
希望这有帮助。