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