2010-03-25 22 views
5

如何创建对特定哈希键值的引用。我尝试了以下,但$$ foo是空的。任何帮助深表感谢。如何在Perl中引用特定的哈希值?

$hash->{1} = "one"; 
$hash->{2} = "two"; 
$hash->{3} = "three"; 

$foo = \${$hash->{1}}; 
$hash->{1} = "ONE"; 

#I want "MONEY: ONE"; 
print "MONEY: $$foo\n"; 
+0

如果你的散列键都是正整数,你应该使用一个数组。 – daotoad 2010-03-25 15:52:54

回答

5

打开严格和警告,你会得到一些线索,什么是错的。

use strict; 
use warnings; 

my $hash = { a => 1, b => 2, c => 3 }; 
my $a = \$$hash{a}; 
my $b = \$hash->{b}; 

print "$$a $$b\n"; 

在一般情况下,如果你想要做切片 或服用参 的事情,你必须使用旧的风格,堆印记语法来得到你想要的。如果您不记得堆积的sigil语法细节,您可能会发现References Quick Reference方便。

更新

由于murugaperumal指出,你可以做my $foo = \$hash->{a};我可以发誓,我试过了,它没有工作(我惊奇)。我会把它当成疲劳让我变得更加愚蠢。

8
use strict; 
use warnings; 
my $hash; 

$hash->{1} = "one"; 
$hash->{2} = "two"; 
$hash->{3} = "three"; 

my $foo = \$hash->{1}; 
$hash->{1} = "ONE"; 
print "MONEY: $$foo\n";