[Cascavel-pm] Outro probleminha....

Flavio S. Glock fglock em pucrs.br
Quarta Outubro 8 13:10:09 CDT 2003


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


- Flavio S. Glock



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