>>>>> "Marcio" == Marcio <- Google >>>>> <marciorp-re5jqeeqqe8avxtiumw...@public.gmane.org>> writes:
Marcio> Mestres, Tenho um script que quado inicializa começa Marcio> acumular algumas informações, e quando é finalizado essas Marcio> informações são descartadas. É pouco coisa. Preciso de Marcio> algo como uma tabela temporária, os dados só existem Marcio> durante a execução do script. To usando por enquanto Marcio> hashes, mais tá ficando confuso. Pensando em uma tabela em Marcio> um banco de dados (o que é inviável) Porque é inviável? Marcio> ela teria 7 colunas, sendo uma delas a chave e pela qual Marcio> preciso localizar os registros, e não teria mais que 20 Marcio> registros. A forma típica de implementar isso é fazer exatamente o que um banco de dados faria. Você precisa de duas estruturas, uma tabela e um índice dessa tabela. my @usuarios = ( { nome => 'foo', email => 'f...@foo.com' }, { nome => 'bar', email => 'b...@bar.com' }, ... ); my %indice_nome; for my $registro (@usuario) { $indice_nome{$registro->{nome}} = $registro; } Depois você vai poder acessar os registros usando o índice: my $registro = $indice_nome{foo}; Tem alguns problemas que você vai precisar resolver manualmente. Você vai precisar atualizar o índice manualmente depois de qualquer operação de escrita. E você também vai precisar garantir a unicidade da chave. Sem essa verificação, se houverem registros com chaves duplicadas, você vai perder dados. Marcio> Quando o script inicia, a tabela não teria nenhum valor, Marcio> apenas a "estrutura", durante a execução serão incluídos, Marcio> excluídos e alterados registros. Quando o script termina Marcio> os dados são descartados. Marcio> Qual a maneira mais prática e elegante de fazer isso? A maneira que eu vejo como mais prática é usar um banco de dados mesmo. Você pode usar SQLite in-memory, assim: my $dbh = DBI->connect('dbi:SQLite:dbname=:memory:'); Se não puder instalar módulos, tem o DB_File que vem no core: http://perldoc.perl.org/DB_File.html#SYNOPSIS -- Eden Cardim -- Insolide Soluções de TI Ltda. +55 11 9644 8225 http://insoli.de =begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer