[SP-pm] Array? Hashes? Outros?
Eden Cardim
eden at insoli.de
Tue Mar 12 19:39:51 PDT 2013
Marcio> Bom, as dúvidas e dificuldades são:
Marcio> 1. Como faço para alterar um "registro" sem precisar
Marcio> informar todas as "colunas"? P.e.: $canais->{"canal_2"} =
Marcio> {ativo => 0}; não dá erro, só que "perco" os outros dados
Marcio> (Nome, Eqp, Slot, etc);
$canais->{canal_2}{ativo} = 0;
Marcio> 2. Como pesquiso? P.e., como saber se já existe o
Marcio> "canal_8".
exists $canais->{canal_8};
Marcio> 3. Qual a ordem do hash? Tem como ordenar? Não é um
Marcio> problema a ordem "aleatória" que ele fica, isso é mais por
Marcio> curiosidade.
Não, os hashes do perl não possuem ordernação. Se quiser os registros
em alguma ordem específica você vai precisar ordenar manualmente,
fazendo algo assim:
my @registros_ordenados = @{$canais}{sort { $a cmp $b} keys %$canais}};
Marcio> 4. No foreach eu estou percorrendo todos os "registro" e
Marcio> imprimindo o valor das "colunas", uma a uma. Tem como
Marcio> fazer um "foreach" na "colunas" do "registro" e imprimir
Marcio> Nome_Da_Coluna = Valor_Da_Coluna?
Sim, cada registro é apenas outro hash, então você pode usar a função
keys neles:
for my $chave (keys %$canais) {
print "$chave\n";
for my $coluna (keys %{$canais->{$chave}}) {
print "$coluna = $registro->{$coluna}\n";
}
}
--
Eden Cardim -- Insolide Soluções de TI Ltda.
+55 11 9644 8225
http://insoli.de
More information about the SaoPaulo-pm
mailing list