[Cascavel-pm] Voltando...
Nelson Ferraz
nferraz em phperl.com
Segunda Novembro 3 17:56:11 CST 2003
Adriano Vivan Borro wrote:
> Ae povo...
>
> Voltei de viagem, finalmente. E agora voltei tb a tal da minha tabela q
> tah me complicando a vida...
Seja bem vindo!
> Apos algumas modificacoes e sugestoes da galera, fiz a seguinte tabela,
> cujas colunas significam, respectivamente, TAG CLUSTER
> No_elem_cluster:
>
> AaCT S10 3
> CaCc S5 8
> aCgg S15 2
> cAcc S22 4
>
> E assim por diante...
>
> O que eu queria eh ter uma saida (em forma de listagem) com as tags em
> ordem alfabetica (sendo maiuscula igual minuscula), os clusters em q ela
> aparece e seus respectivos numero de elementos. Ou seja (utilizando o
> exemplo acima):
>
> AACT
> S10 3
>
> ACGG
> S15 2
>
> CACC
> S5 8
> S22 4
Supondo que a primeira tabela está em um arquivo texto, que tal comecar
com algo bem simples:
while (<>) {
push @array, uc($_);
}
foreach (sort @array) {
print $_;
}
O resultado deste script será:
AACT S10 3
ACGG S15 2
CACC S22 4
CACC S5 8
Agora precisamos separar as tags em conjuntos, o que normalmente pode
ser feito com um hash. Algo assim:
while (<>) {
push @array, uc($_);
}
foreach (sort @array) {
($tag,$cluster,$num) = split(/\s+/,$_);
$count->{$tag}->{$cluster} = $num
}
foreach $tag (keys %{$count}) {
print "$tag\n";
foreach $cluster (keys %{$count->{$tag}}) {
print " $cluster : ", $count->{$tag}->{$cluster}, "\n";
}
}
O resultado deverá ser:
CACC
S5 : 8
S22 : 4
ACGG
S15 : 2
AACT
S10 : 3
É isto.
Para entender melhor a estrutura de hashes, você pode incluir o seguinte
no final do programa:
use Data::Dumper;
print Dumper $count;
--
Nelson Ferraz
GNU BIS: http://www.gnubis.com.br
Mais detalhes sobre a lista de discussão Cascavel-pm