[Cascavel-pm] Outro probleminha....

Luis Campos de Carvalho lechamps em terra.com.br
Quarta Outubro 8 13:30:22 CDT 2003


Flavio S. Glock wrote:
> Adriano Vivan Borro wrote:
> 
>>Opa,
>>
>>To quase chegando lah. O problema eh q eu precisava ordenar um arquivo
>>de 3 ou mais colunas. Tentei usar a rotina, mas nao deu certo. Digamos
>>que tenho entao, um arquivo com nomes e sobrenomes. Quero processa-lo de
>>tal forma que me retorne um arquivo com os nomes ordenados (aparecendo
>>uma unica vez), os sobrenomes relativos aos nomes, e a quantidade de
>>vezes que esse nome apareceu. Tb, nao entendi muito bem o exemplo do
>>flavio. O q este map faz? Enfim... Tah ae a rotina que eu escrevi, com a
>>ajuda d vcs:
>>
>>#!/bin/perl
>>open (NOMES,"nomes.txt");
>>open (OUTPUT,">output.txt);
>>
>>#rotina do flavio, q nao consegui rodar e nao entendi muito bem
>>#while (<NOMES>)
>>#{
>>#    chomp;
>>#    $h{$_}++};
>>#    print map { "$_ $h{$_}\n" } sort key %h;
>>
>>while (<NOMES>)
>>{
>>    chomp;
>>    $count{$_}++;
>>}
>>@keys=sort {
>>    $_{$a} cmp $_{$b}
>>    } keys %count;
>>foreach (@keys) {
>>    print OUTPUT "$_\t$count{$_}\n";
>>    }
>>close OUTPUT;
>>close NOMES;
>>
>>Bem... Resumindo...
>>
>>Tenho o arquivo:
>>
>>Zeh Silva
>>Scheila Carvalho
>>Zeh Tripeh
>>Claudia Shiffer
>>Zeh Maneh
>>
>>E quero como saida:
>>
>>Claudia    Shiffer    1
>>Scheila    Carvalho    1
>>Zeh    Maneh, Silva, Tripeh    3
> 
> 
> Sem map, desta vez:
> 
>   while (<>)
>   {
>       ($nome,$sobrenome) = chomp && split;
>       $h{$nome}{$sobrenome}++
>   };
> 
>   for $nome ( sort keys %h ) {
>       print "$nome ", 
>             join(',', keys %{$h{$nome}}) ," ", 
>             0 + keys %{$h{$nome}}, "\n"; 
>   }
> 
> # saída:
> Claudia Shiffer 1
> Scheila Carvalho 1
> Zeh Tripeh,Silva,Maneh 3
> 
> 

   Flávio, se eu entendi direito, o Adriano tem 3 colunas (nomes). Isso 
complica bastante a coisa, já que a estrutura de dados que parece ser a 
mais adequada é uma árvore com hashes para representar as sub-árvores e 
arrays de valores nas folhas.

   Estou pensando em uma solução simples.
   Por favor me corrijam se eu estiver errado.
-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
   Luis Campos de Carvalho is Computer Scientist,
   PerlMonk [SiteDocClan], Cascavel-pm Moderator,
   Unix Sys Admin && Certified Oracle DBA
   http://br.geocities.com/monsieur_champs/
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=




Mais detalhes sobre a lista de discussão Cascavel-pm