In Perl, è possibile assegnare ad una variabile un riferimento a un'altra variabile, in questo modo:Shallow riferimento copia nella variabile in Perl
my @array = (1..10);
my $ref = \@array;
E, in quanto è un punto di riferimento, si può fare qualcosa di simile e entrambe le variabili saranno interessati:
push @array, 11;
push @$ref, 12;
e entrambe le variabili conterranno 1..12
, perché entrambi puntano allo stesso spazio.
Ora vorrei sapere se esiste un modo per fare la stessa cosa, ma iniziare con un riferimento e successivamente assegnare tale riferimento a una variabile semplice. Per esempio:
my $ref = [1..12];
my @array = # something here that makes @array point to the same space $ref contains
So che posso solo assegnare in questo modo:
my @array = @$ref;
ma, che è una copia. Se altero $ ref o @array, quelli saranno cambiamenti indipendenti.
C'è un modo per rendere @array punto alla stessa variabile di $ ref?
Duplicate http://stackoverflow.com/questions/14070342/typeglob-aliases –
Prendere atto della nota di Ikegami la più sensata approccio. Se lavori con strutture Perl nidificate, abbastanza, ti abituerai a recuperarlo come un ref, invece di copiarlo su una variabile array. Aggiunge solo 1 carattere per digitare a '$'. – Axeman
@ Axeman2: Sì, certo. Questa domanda era più sullo spirito educativo. :-) –