Tracce
/
Perl
Perl
/
Programma
/
Riferimenti
Ri

Riferimenti in Perl

9 esercizi

Informazioni su Riferimenti

Capire i riferimenti è un elemento fondamentale per usare Perl in modo efficace. Dato che i riferimenti sono scalari, e gli array e gli hash possono contenere solo scalari, i riferimenti sono essenziali per annidare queste strutture dati.

I riferimenti si possono creare per variabili e subroutine esistenti usando l'operatore barra rovesciata \:

  • \$scalar per creare un riferimento a uno scalare (può essere qualsiasi scalare, ad esempio \1, non solo una variabile).
  • \@array per creare un riferimento a un array.
  • \%hash per creare un riferimento a un hash.
  • \&sub per creare un riferimento a codice.

Puoi anche creare quello che viene chiamato riferimento anonimo per array, hash e subroutine:

  • ['Alice', 'Bob', 'Charlie'] per creare un riferimento anonimo a un array.
  • {foo => 'a', bar => 'b', baz => 'c'} per creare un riferimento anonimo a un hash.
  • sub { return 1 } per creare un riferimento anonimo a codice.

ATTENZIONE: le parentesi graffe in Perl possono essere ambigue in certi contesti. Se non ottieni il riferimento a un hash che ti aspetti, aggiungi un più all'inizio per disambiguare, ad esempio +{}. Per maggiori informazioni, vedi Parentesi graffe.

Ai riferimenti si può accedere usando l'operatore freccia ->:

  • $ref->[0] per accedere a un elemento all'interno di un riferimento a un array.
  • $ref->{foo} per accedere a un valore all'interno di un riferimento a un hash.
  • $ref->($arg) per chiamare una subroutine tramite un riferimento a codice.

Ai dati all'interno di strutture dati complicate, come array multidimensionali e hash annidati, si può accedere concatenando gli indici, ad esempio $ref->{foo}[0]{bar} (equivalente a $ref->{foo}->[0]->{bar}).

Se vuoi dereferenziare un intero array o hash, puoi usare l'operatore freccia seguito rispettivamente da @* o %*, ad esempio $ref->@* oppure $ref->%*. Puoi anche ottenere degli slice da un riferimento a un array o a un hash sostituendo il * con un indice, ad esempio $ref->@[0..2] oppure $ref->@{'Foo', 'Bar'}. Per gli slice, la variazione del sigil funziona qui allo stesso modo che con le variabili array e hash.

Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Riferimenti

La pratica è bloccata

Sblocca 8 altri esercizi per esercitarti su Riferimenti