[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