如何创建对特定哈希键值的引用。我尝试了以下,但$$ 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";
如何创建对特定哈希键值的引用。我尝试了以下,但$$ 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";
打开严格和警告,你会得到一些线索,什么是错的。
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};
我可以发誓,我试过了,它没有工作(我惊奇)。我会把它当成疲劳让我变得更加愚蠢。
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";
如果你的散列键都是正整数,你应该使用一个数组。 – daotoad 2010-03-25 15:52:54