Página 1 de 1

Ordenamiento descendente

NotaPublicado: 2008-10-06 17:30 @771
por lnx_hg
Hola, disculpen que los moleste pero tengo un problema y no he podido encontrar la solución. Tengo un objeto que debo ordenar de mayor a menor, dependiendo de una rama. El objeto está estructurado de la siguiente manera:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$obj->{total_visit}->{$nombre}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Rama total_visit es la que debo considerar para el ordenamiento, es decir, el registro que contenga el número más alto debe de ir al principio.
Ya intenté con "sort" y me lo toma como si fueran caracteres, es decir, me pone: 1, 11, 2, 3, 31, 4. Si alguien conoce un comando para hacer lo que pido, se lo agradeceré mucho.

¡¡Gracias!!

NotaPublicado: 2008-10-06 17:48 @783
por explorer
Debes usar sort() pero con ordenación numérica: sort {$a <=> $b}. Por defecto, es alfanumérica.

NotaPublicado: 2008-10-06 18:02 @793
por lnx_hg
Gracias por contestar. Me pudieras dar un ejemplo sencillito sobre la implementación y estoy investigando en CPAN y pues no entiendo dado que no estoy tan avanzado en Perl.

Este así es como lo implemento yo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
foreach $total (sort keys %{$obj}) {
        foreach $customer (keys %{$obj->{$total}}) {
                print $customer ." - ". $total."<br>";
                }
        }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

NotaPublicado: 2008-10-06 18:13 @801
por explorer
No tienes que mirar en CPAN. No se trata de un módulo. Tienes que mirar la página de sort().

No entiendo mucho lo que expones. Parece que estás volcando los valores de %{$obj}, pero no ordenándolos.

NotaPublicado: 2008-10-06 18:27 @810
por lnx_hg
Muchas gracias por tu ayuda, fue muy importante :D, acabo de encontrar la solución con tu ayuda. La respuesta que necesitaba era:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
foreach $total ( sort { $b <=> $a }  keys %{$customer} )
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Te explico cual era mi problema:
Necesitaba recorrer un objecto que contenía dos ramas; la primera es la que debo ordenar, esta rama contiene el total de visitas de un cliente y la otra contiene el nombre, en un reporte los clientes con mayor frecuencia deben de aparecer en la parte de arriba.

POR TU AYUDA, MUCHAS GRACIAS.