[SP-pm] Array? Hashes? Outros?

Marcio - Google marciorp at gmail.com
Tue Mar 12 18:29:28 PDT 2013


Pessoal,

   Primeiro, muito obrigado pela ajuda até aqui.

   Bom, testei todas as dicas que não envolviam instalação de módulos. Em
principio gostei bastante do DB_File que o Eden sugeriu, pelo fato de que
se no futuro eu precisar manter os dados, e só dar um nome pro arquivo.

   Nos dois exemplos esbarrei nas mesmas dificuldades, vou colocar o código
usando hash com o Marcio sugeriu pq tá mais organizado.

use strict;
use warnings;

$|=1;

# Inicializa
my $canais = {
    canal_1 => {slot => 1, nome => "Canal 1", eqp => "ed871p09j4", ativo =>
1, nerros => 0, ntotal => 0, ulterro => ""},
    canal_2 => {slot => 2, nome => "Canal 2", eqp => "ed871p09j4", ativo =>
1, nerros => 0, ntotal => 0, ulterro => ""},
    canal_3 => {slot => 1, nome => "Canal 3", eqp => "ed871p09j5", ativo =>
1, nerros => 0, ntotal => 0, ulterro => ""},
    canal_4 => {slot => 3, nome => "Canal 4", eqp => "ed871p09j2", ativo =>
1, nerros => 0, ntotal => 0, ulterro => ""}
};

# Inserir
$canais->{"canal_5"} = {slot => 0, nome => "Canal 5", eqp => "ed871p09j6",
ativo => 0, nerros => 3, ntotal => 7, ulterro => "2013-03-12 20:34:12"};

# Excluir
delete $canais->{"canal_3"};

# Lista os dados
foreach my $registro (keys %$canais) {
    print "$registro\n";
    print "Nome.: $canais->{$registro}{'nome'}\n";
    print "Slot.: $canais->{$registro}{'slot'}\n";
    print "Eqp..: $canais->{$registro}{'eqp'}\n";
    print "Ativo: $canais->{$registro}{'ativo'}\n";
    print "Erros: $canais->{$registro}{'nerros'}\n";
    print "Total: $canais->{$registro}{'ntotal'}\n";
    print "UltEr: $canais->{$registro}{'ulterro'}\n";
    print "---------------\n";
}

   Bom, as dúvidas e dificuldades são:
   1. Como faço para alterar um "registro" sem precisar informar todas as
"colunas"? P.e.: $canais->{"canal_2"} = {ativo => 0}; não dá erro, só que
"perco" os outros dados (Nome, Eqp, Slot, etc);
   2. Como pesquiso? P.e., como saber se já existe o "canal_8".
   3. Qual a ordem do hash? Tem como ordenar? Não é um problema a ordem
"aleatória" que ele fica, isso é mais por curiosidade.
   4. No foreach eu estou percorrendo todos os "registro" e imprimindo o
valor das "colunas", uma a uma. Tem como fazer um "foreach" na "colunas" do
"registro" e imprimir Nome_Da_Coluna = Valor_Da_Coluna?


[...]'s

Marcio
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130312/e9bbc0e1/attachment.html>


More information about the SaoPaulo-pm mailing list