Tracks
/
Perl
Perl
/
Temario
/
Referencias
Re

Referencias en Perl

9 ejercicios

Acerca de Referencias

Entender las referencias es un elemento fundamental para usar Perl con eficacia. Como las referencias son escalares, y los arrays y los hashes solo pueden contener escalares, las referencias son clave para anidar estas estructuras de datos.

Se pueden crear referencias a variables y subrutinas existentes usando el operador de barra invertida \:

  • \$scalar para crear una referencia a un escalar (puede ser cualquier escalar, por ejemplo \1, no solo una variable).
  • \@array para crear una referencia a un array.
  • \%hash para crear una referencia a un hash.
  • \&sub para crear una referencia a código.

También puedes crear lo que se conoce como una referencia anónima para arrays, hashes y subrutinas:

  • ['Alice', 'Bob', 'Charlie'] para crear una referencia anónima a un array.
  • {foo => 'a', bar => 'b', baz => 'c'} para crear una referencia anónima a un hash.
  • sub { return 1 } para crear una referencia anónima a código.

ADVERTENCIA: las llaves en Perl pueden ser ambiguas en ciertos contextos. Si no obtienes la referencia a hash que esperas, añade un signo más al principio para desambiguarla, por ejemplo +{}. Consulta las llaves para más información.

Se puede acceder a las referencias usando el operador de flecha ->:

  • $ref->[0] para acceder a un elemento dentro de una referencia a un array.
  • $ref->{foo} para acceder a un valor dentro de una referencia a un hash.
  • $ref->($arg) para llamar a una subrutina a través de una referencia a código.

Se puede acceder a los datos dentro de estructuras de datos complicadas, como arrays multidimensionales y hashes anidados, encadenando subíndices, por ejemplo $ref->{foo}[0]{bar} (lo mismo que $ref->{foo}->[0]->{bar}).

Si quieres desreferenciar un array o un hash completo, puedes usar el operador de flecha seguido de @* o %* respectivamente, por ejemplo $ref->@* o $ref->%*. También puedes obtener porciones de una referencia a array o a hash sustituyendo el * por un subíndice, por ejemplo $ref->@[0..2] o $ref->@{'Foo', 'Bar'}. En el caso de las porciones, aquí se aplica la varianza de sigilos de la misma forma que con las variables de array y de hash.

Editar en GitHub El enlace se abre en una nueva ventana o pestaña

Aprende Referencias

La práctica está bloqueada

Desbloquea 8 ejercicios más para practicar Referencias