Trilhas
/
Perl
Perl
/
Programa
/
Referências
Re

Referências em Perl

9 exercícios

Sobre Referências

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

Referências podem ser criadas para variáveis e sub-rotinas existentes usando o operador de barra invertida \:

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

Você também pode criar o que se chama de referência anônima para arrays, hashes e sub-rotinas:

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

AVISO: as chaves em Perl podem ser ambíguas em certos contextos. Se você não está obtendo a referência de hash que esperava, adicione um sinal de mais no início para desambiguar, por exemplo, +{}. Consulte Chaves para mais informações.

É possível acessar referências usando o operador seta ->:

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

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

Se você quiser desreferenciar um array ou hash inteiro, pode usar o operador seta seguido de @* ou %*, respectivamente, por exemplo, $ref->@* ou $ref->%*. Você também pode obter fatias de uma referência para array ou hash substituindo o * por um subscrito, por exemplo, $ref->@[0..2] ou $ref->@{'Foo', 'Bar'}. Para fatias, a variação de sigil se aplica aqui da mesma forma que se aplica a variáveis de array e de hash.

Editar via GitHub O link abre em uma nova janela ou aba

Aprenda Referências

A prática está bloqueada

Desbloqueie mais 8 exercícios para praticar Referências