[SP-pm] sort

Wendel Scardua wendelscardua em gmail.com
Quarta Janeiro 24 04:41:59 PST 2007


só um "patch":

# é $a e $b, não dois $_ :-)
my @sorted = sort{$a->{$campo} <=> $b->{$campo} } @dados;
foreach my $item (@sorted) {
  print $item->{campo1};
  print $item->{campo2};
  #etc...
}

On 1/23/07, Eden Cardim <edencardim em gmail.com> wrote:
>
> On 1/23/07, Thomas Britis <thomas em tcnet.com.br> wrote:
> > Eden,
> >
> >         Obrigado pela resposta.
> >
> >         Porém, o uso do %ENV foi apenas exemplificativo. O que acontece
> na
> > prática é o seguinte:
> >
> >         Eu tenho um programa que carrega as informações em um hash da
> seguinte
> > forma:
> >
> > $hash[$count] = ({ campo => valor });
> >
> > E, é claro que tenho diversos campos e diversos valores para cada campo.
> > O que quero é ordenar por um dos campos existentes.
>
> Ainda acho que você não precisa do hash de hashes. Porque não carregar
> os dados num array, já que o índice é numérico?
>
> > Hoje, o que eu faço é:
> > $campo{$count} = $valor;
> > @result = sort {  $campo{$a} cmp $campo{$b} } keys %campo;
> >
> > e depois de fazer o sort eu gero novamente a hash, porém considero isso
> > uma perda de tempo pois o resultado, como vc mesmo disse, é uma array.
> > Preciso então comparar o resultado com o valor na hash e ordenar.
> > Imagino que deva haver maneira de se fazer isso de forma mais simples.
>
> Assumindo que os dados tão carregados num array:
>
> my @sorted = sort{$_->{$campo} <=> $_->{$campo} } @dados;
> foreach my $item (@sorted) {
>    print $item->{campo1};
>    print $item->{campo2};
>    #etc...
> }
>
> Se quiser continuar usando um hash de hashes, use a "tranformação
> schwartziana", para não perder a associação entre chaves e valores.
>
> --
> Eden Cardim
> Instituto Baiano de Biotecnologia
> Núcleo de Biologia Computacional e Gestão de Informações Biotecnológicas
> Laboratório de Bioinformática
> --
> "you seem to think that 'close enough' is close enough...
> please learn to be 'literal' around programming."
> merlyn - on irc.freenode.net#perl
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
[]s
Wendel

"Não ajustar o auto-ajuste" - http://wendel.scardua.net/
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/saopaulo-pm/attachments/20070124/25d41cbf/attachment.html 


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