用Perl中的标量替换哈希名称

时间:2011-03-10 23:26:54

标签: perl

我有一个哈希:

my $normal_hash = {a => '10',};
print $normal_hash;  # prints HASH(0x......)

我想通过以下方式引用此哈希:

my $var = 'normal_hash';
print $$var; 

这是错误的,但为了得到相同的结果我需要放在那里?

3 个答案:

答案 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)

希望这有帮助。