[Cascavel-pm] vocabulário de referências

Flavio S. Glock fglock em pucrs.br
Quinta Outubro 2 08:29:57 CDT 2003


Alceu R. de Freitas Jr. wrote:
> 
> Olá Srs.,
> 
> Imagine que criei um hash, e que cada chave faça
> referência para um array anônimo com 4 posições. Eu
> quero imprimir cada chave, e todas as posições dessa
> chave.
> 
> Consultando perldoc perldsc:
> 
> foreach $chave( keys %hash) {
> 
>    print "$chave: @{ $hash{$family} }\n";
> 
> }
> 
> Funciona perfeitamente. O problema é que não entendi o
> "@{ }". O que significa isso? Um loop? Como a
> referência aponta para um array, não seria mais
> natural escrever "@[ ]" ?

Alceu:

Quando se trata de estruturas de dados, o Perl utiliza {} em vez de
parênteses, porque os parenteses são usados para identificar funcões.

Leia isto bem devagar, porque é meio complicado:

  @ar transforma o conteúdo do array 'ar' em uma lista

  @{ar} faz a mesma coisa - transforma o conteúdo do array 'ar' em uma
lista

  [ 1, 2 ] é utilizado para transformar uma lista em um array anônimo.

  @{[ 1, 2 ]} transforma uma lista em array anônimo, e o conteúdo do
array anônimo de novo para lista.

  @[ 1, 2 ] não existe, está escrito errado.

  @{ $hash{$family} } interpreta o conteúdo de $hash{$family} como sendo
um array, e transforma o resultado em uma lista.

- Flavio S. Glock



Mais detalhes sobre a lista de discussão Cascavel-pm