2010-03-25 22 views
5

Belirli bir hash anahtarındaki değere nasıl başvuru yaparım. Aşağıdakileri denedim ama $$ foo boş. Herhangi bir yardım çok takdir edilir. Sıkı ve uyarıları üzerinePerl'de belirli karma değere nasıl başvuru yapabilirim?

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

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

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

Karma anahtarlarınız pozitif tam sayıysa, muhtemelen bir dizi kullanmalısınız. – daotoad

cevap

5

açın ve yanlış neler olduğunu yapılması gerektiğine dair ipuçları elde edersiniz. Eğer dilimleri veya alarak refs şeyler yapmak istiyorsanız, eski stil kullanmak lazım Genelde

use strict; 
use warnings; 

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

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

, istediğini elde etmek desen sözdizimi yığılmış. Kazıklı sigil sözdizimi ayrıntılarını hatırlamıyorsanız, References Quick Reference'u bulabilirsiniz.

güncelleme

murugaperumal gibi noktalar gitti, sen ben bunu denedim yemin edebilirim my $foo = \$hash->{a}; yapabilir ve (benim için sürpriz) çalışmadı. Onu daha fazla aptal yapan beni yorgunluk haline getireceğim.

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"; 
İlgili konular