2010-03-25 12 views
5

Jak utworzyć odwołanie do wartości w określonym kluczu skrótu. Próbowałem następujące, ale $$ foo jest pusty. Każda pomoc jest doceniana.Jak mogę uzyskać odwołanie do określonej wartości mieszania w Perlu?

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

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

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

Jeśli twoje klucze skrótu są dodatnimi liczbami całkowitymi, prawdopodobnie powinieneś używać tablicy. – daotoad

Odpowiedz

5

Włącz rygorystyczne i ostrzeżenia, a otrzymasz wskazówki, co się dzieje źle.

use strict; 
use warnings; 

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

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

W ogóle, jeśli chcesz robić rzeczy z plasterków lub biorących odn , musisz używać starego stylu, ułożone składni Sigil, aby uzyskać to, co chcesz. Możesz znaleźć References Quick Reference pod ręką, jeśli nie pamiętasz składanych szczegółów sigila.

aktualizacja

Jako murugaperumal Zwraca uwagę, można to zrobić my $foo = \$hash->{a}; Mógłbym przysiąc, że próbowałem i nie działa (ku mojemu zdziwieniu). Będę nazywać to zmęczeniem, czyniąc mnie ekstra głupim.

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";