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

Nelson C. T. Ferraz nferraz em phperl.com
Quinta Outubro 2 09:30:43 CDT 2003


> foreach $chave( keys %hash) {
>   
>    print "$chave: @{ $hash{$family} }\n";
> 
> }
> 
> Funciona perfeitamente. O problema é que não entendi o
> "@{ }". O que significa isso?

Você tem um hash como este:

my %arr = (
		'chave 1' => [1,2,3,4],
		'chave 2' => [5,6,7,8],
		'chave 3' => [9,0,1,2]
);

Observe que cada chave aponta não para um valor, mas para uma 
referência. Portanto, se você tentar imprimir o valor diretamente, vai 
obter algo como:

print $arr{'chave 1'};
ARRAY(0x813aa8c)

Para obter o array, você deve "de-referenciá-lo", o que pode ser feito 
através da expressão @{$referencia}

print @{$arr{'chave 1'}};
1234

Em outras palavras, você está dizendo ao Perl para interpretar aquele 
valor como um array. (Isto é necessário porque você poderia estar 
querendo lidar diretamente com a referência!)

-- 
[]s

Nelson

________________________________________________________________
Nelson Ferraz

GNU BIS: http://www.gnubis.com.br
PhPerl:  http://www.phperl.com




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