Eden, é porque eu não tenho BD instalado, e não posso instalar também. Além do que, os dados só existem durante a execução, então não sei se é legal usar um BD para isso.<div><br></div><div>Acho que o DB_File pode ser a saída. Vou tentar colocar em prática os exemplos e sugestões que recebi e ver qual atende melhor.</div>
<div><br><div class="gmail_quote">Em 12 de março de 2013 06:42, Eden Cardim <span dir="ltr"><<a href="mailto:eden@insoli.de" target="_blank">eden@insoli.de</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
>>>>> "Marcio" == Marcio  <- Google <<a href="mailto:marciorp-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org">marciorp-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org</a>>> writes:<br>
<br>
    Marcio> Mestres, Tenho um script que quado inicializa começa<br>
    Marcio> acumular algumas informações, e quando é finalizado essas<br>
    Marcio> informações são descartadas. É pouco coisa. Preciso de<br>
    Marcio> algo como uma tabela temporária, os dados só existem<br>
    Marcio> durante a execução do script. To usando por enquanto<br>
    Marcio> hashes, mais tá ficando confuso. Pensando em uma tabela em<br>
    Marcio> um banco de dados (o que é inviável)<br>
<br>
Porque é inviável?<br>
<br>
    Marcio> ela teria 7 colunas, sendo uma delas a chave e pela qual<br>
    Marcio> preciso localizar os registros, e não teria mais que 20<br>
    Marcio> registros.<br>
<br>
A forma típica de implementar isso é fazer exatamente o que um banco<br>
de dados faria. Você precisa de duas estruturas, uma tabela e um<br>
índice dessa tabela.<br>
<br>
my @usuarios = (<br>
  { nome => 'foo', email => '<a href="mailto:foo@foo.com">foo@foo.com</a>' },<br>
  { nome => 'bar', email => '<a href="mailto:bar@bar.com">bar@bar.com</a>' },<br>
  ...<br>
);<br>
<br>
my %indice_nome;<br>
<br>
for my $registro (@usuario) {<br>
  $indice_nome{$registro->{nome}} = $registro;<br>
}<br>
<br>
Depois você vai poder acessar os registros usando o índice:<br>
<br>
my $registro = $indice_nome{foo};<br>
<br>
Tem alguns problemas que você vai precisar resolver manualmente. Você<br>
vai precisar atualizar o índice manualmente depois de qualquer<br>
operação de escrita. E você também vai precisar garantir a unicidade<br>
da chave. Sem essa verificação, se houverem registros com chaves<br>
duplicadas, você vai perder dados.<br>
<br>
    Marcio> Quando o script inicia, a tabela não teria nenhum valor,<br>
    Marcio> apenas a "estrutura", durante a execução serão incluídos,<br>
    Marcio> excluídos e alterados registros. Quando o script termina<br>
    Marcio> os dados são descartados.<br>
<br>
    Marcio> Qual a maneira mais prática e elegante de fazer isso?<br>
<br>
A maneira que eu vejo como mais prática é usar um banco de dados<br>
mesmo. Você pode usar SQLite in-memory, assim:<br>
<br>
my $dbh = DBI->connect('dbi:SQLite:dbname=:memory:');<br>
<br>
Se não puder instalar módulos, tem o DB_File que vem no core:<br>
<br>
<a href="http://perldoc.perl.org/DB_File.html#SYNOPSIS" target="_blank">http://perldoc.perl.org/DB_File.html#SYNOPSIS</a><br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Eden Cardim -- Insolide Soluções de TI Ltda.<br>
<a href="tel:%2B55%2011%209644%208225" value="+551196448225">+55 11 9644 8225</a><br>
<a href="http://insoli.de" target="_blank">http://insoli.de</a><br>
</font></span><div class="HOEnZb"><div class="h5">=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><br>[...]'s<br><br>Marcio
</div>