2010-03-25 5 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

답변

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"; 
관련 문제