Percursos
/
Perl
Perl
/
Programa
/
Referências
Re

Referências em Perl

9 exercícios

Sobre Referências

Compreender as referências é um elemento fundamental para usar Perl de forma eficaz. Como as referências são escalares, e os arrays e os hashes só podem conter escalares, as referências são essenciais para aninhar estas estruturas de dados.

Podes criar referências para variáveis e sub-rotinas existentes com o operador barra invertida \:

  • \$scalar para criar uma referência a um escalar (pode ser qualquer escalar, por exemplo \1, não apenas uma variável).
  • \@array para criar uma referência a um array.
  • \%hash para criar uma referência a um hash.
  • \&sub para criar uma referência a código.

Também podes criar o que se chama uma referência anónima para arrays, hashes e sub-rotinas:

  • ['Alice', 'Bob', 'Charlie'] para criar uma referência anónima a um array.
  • {foo => 'a', bar => 'b', baz => 'c'} para criar uma referência anónima a um hash.
  • sub { return 1 } para criar uma referência anónima a código.

AVISO: as chavetas em Perl podem ser ambíguas em certos contextos. Se não estiveres a obter a referência a um hash que esperas, acrescenta um sinal de mais à frente para desambiguar, por exemplo +{}. Consulta Chavetas para mais informações.

Podes aceder às referências com o operador seta ->:

  • $ref->[0] para aceder a um elemento dentro de uma referência a um array.
  • $ref->{foo} para aceder a um valor dentro de uma referência a um hash.
  • $ref->($arg) para chamar uma sub-rotina através de uma referência a código.

Podes aceder a dados dentro de estruturas de dados complicadas, como arrays multidimensionais e hashes aninhados, encadeando subscritos, por exemplo $ref->{foo}[0]{bar} (o mesmo que $ref->{foo}->[0]->{bar}).

Se quiseres desreferenciar um array ou um hash completo, podes usar o operador seta seguido de @* ou %*, respetivamente, por exemplo $ref->@* ou $ref->%*. Também podes obter fatias de uma referência a um array ou a um hash substituindo o * por um subscrito, por exemplo $ref->@[0..2] ou $ref->@{'Foo', 'Bar'}. Nas fatias, a variação de sigilo aplica-se aqui da mesma forma que nas variáveis de array e de hash.

Editar via GitHub A ligação abre numa nova janela ou separador

Aprende Referências

A prática está bloqueada

Desbloqueia mais 8 exercícios para praticares Referências