ссылка на Perl-хэш - PullRequest
       1

ссылка на Perl-хэш

1 голос
/ 13 октября 2011
my $hash_ref = { a => 1, b => 2 };
my $tmp_ref = $hash_ref;

Код такой же, как и выше, и я хочу изменить значение хеша и вставить несколько новых пар. мой вопрос таков:

  1. как мне достичь этого по $tmp_ref
  2. Можно ли изменить или вставить по ссылке?
  3. Соответствует ли она справочной, справочной и конкретной структуре данных (здесь хэш)?

Большое спасибо!

Ответы [ 2 ]

3 голосов
/ 13 октября 2011

В этом случае $tmp_ref не является ссылкой на $hash_ref, это просто копия любого значения $hash_ref.

Вы можете получить доступ к хешу с помощью $tmp_ref, как если бы вы использовали $hash_ref:

$tmp_ref->{a}; # 1

$tmp_ref->{foobar} = "hi";
$tmp_ref->{foobar}; # "hi"

Если вы действительно хотите сделать $tmp_ref ссылкой на $hash_ref, вот как вы получите доступ к исходному хешу:

$tmp_ref = \$hash_ref;
${$$tmp_ref}{a};
2 голосов
/ 13 октября 2011

И $hash_ref, и $tmp_ref будут ссылаться на один и тот же хеш, поэтому вы можете добавить что-то к $hash_ref с помощью:

$tmp_ref->{c} = 3;

Тогда и $hash_ref, и $tmp_ref будут точка ссылаться на один и тот же (a => 1, b => 2, c => 3) хеш.

Ссылки являются версией указателей Perl.

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