Как я могу взять ссылку на определенное значение хэш-функции в Perl?

Как я создаю ссылку на значение в определенном ключе хеша. Я попробовал следующее, но $$foo пуст. Любая справка очень ценится.

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

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

#I want "MONEY: ONE";
print "MONEY: $$foo\n";
5
задан brian d foy 26 March 2010 в 17:35
поделиться

2 ответа

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";
8
ответ дан 18 December 2019 в 14:44
поделиться

Включите строгие правила и предупреждения, и вы получите некоторые подсказки относительно того, что идет не так.

use strict;
use warnings;

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

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

В общем, если вы хотите делать что-то с срезами или брать ссылки , вы должны использовать старый стиль, синтаксис сгруппированных сигил, чтобы получить то, что вы хотите. Вы можете найти Краткий справочник под рукой, если не помните подробностей синтаксиса сложенных сигил.

update

Как указывает murugaperumal , вы можете сделать my $ foo = \ $ hash -> {a}; Могу поклясться, что пробовал это, но не вышло » т работать (к моему удивлению). Я спишу это на то, что усталость делает меня еще более глупым.

5
ответ дан 18 December 2019 в 14:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: