В Perl, вы можете присвоить переменной ссылку на другой переменной, например:Shallow справочник копию в переменной Perl
my @array = (1..10);
my $ref = \@array;
И, как это ссылка, вы можете сделать что-то подобное и обе переменные будут затронуты:
push @array, 11;
push @$ref, 12;
и обе переменные будут содержать 1..12
, потому что они указывают на один и тот же пространстве.
Теперь я хотел бы знать, есть ли способ, которым вы можете сделать то же самое, но начиная с ref и позже назначая эту ссылку простой переменной. Например:
my $ref = [1..12];
my @array = # something here that makes @array point to the same space $ref contains
Я знаю, что могу просто присвоить это следующим образом:
my @array = @$ref;
, но это копия. Если я изменю $ ref или @array, это будут независимые изменения.
Есть ли способ сделать точку @array той же переменной, что и $ ref?
Дубликата http://stackoverflow.com/questions/14070342/typeglob-aliases – 2013-04-06 12:10:23
Принять к сведению записки Икегов о наиболее разумных подход. Если вы работаете с вложенными структурами Perl, достаточно, вы привыкли извлекать его как ref, а не копировать его в переменную массива. Он добавляет только 1-символьный тип к '$'. – Axeman
@ Axeman2: Да, конечно. Этот вопрос был больше связан с воспитательным духом. :-) –