[Cascavel-pm] Array Bidimensional

Igor Sutton igor.sutton em gmail.com
Quarta Abril 2 15:01:09 PDT 2008


On Apr 2, 2008, at 11:42 PM, Luis Motta Campos wrote:

> Marcelo Bom Jardim Villasanin wrote:
>> Dessa forma até funciona mas na verdade o que preciso é do seguinte:
>>
>> 1) Um array bidimensional onde o indice é uma string 2 Percorrer o
>> array mesmo sem saber qual a chave do mesmo.
>>
>> tentei da seguinte forma:
>>
>> my @array;
>>
>> $array{"$var1"}{"$var2"} = "teste";
>>
>> depois preciso dar um foreach para pegar isso...
>
> A verdade é que você tem um problema, e não sabe como resolver.
>
> Ao invés de fazer perguntas muito específicas, e ganhar respostas não
> muito úteis, que tal explicar o que você está tentando fazer e ganhar
> uma solução mais "perl-like"?
>
> Me desculpem Eden, Gabriel, Nilson, e Nélson. Todas as respostas estão
> precisas e corretas, mas não resolvem o problema.

Eu acredito que falta um pouco de contexto para o Marcelo.  
Primeiramente, em Perl não existem arrays com índices sem ser  
numérico. Caso você precise de um índice em formato textual, utilize  
hash.

Lembrando novamente: não existem arrays com índice textual em Perl,  
esqueça o PHP.

O que você quer é um hash de hashes, mais conhecido como HoH (Hash of  
Hashes). Como o Nelson já apontou, `perldoc perldsc` menciona a  
respeito de estrutura de dados em Perl, e recomendo a leitura.

Quickstart:

<code>
#!perl -l

use strict;
use warnings;

my $hoh= { a => { b => 'teste', } };

my $i= 'a';
my $j= 'b';

print $hoh->{$i}{$j}, $/;

$hoh->{$i}{c}= 'novo';

print "$_: $hoh->{$i}{$_}" for keys %{ $hoh->{$i} };

</code>

Acho que com isso, mais a leitura do `perldoc perldsc` você consegue  
se virar direitinho :-)

Boa sorte!

-- Igor


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