• Publicidad

Ordenar cronológicamente las llaves de una hash

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Ordenar cronológicamente las llaves de una hash

Notapor MARKO » 2013-11-07 20:36 @900

Hola, perl en español, un problemita acá.

Tengo un hash de arreglos el cual tiene como llaves fechas de la siguiente manera
Sintáxis: [ Descargar ] [ Ocultar ]
  1. 2013-08-16 => [1,2,8,9] 
  2. 2013-08-17 => [1,2,4,4] 
  3. 2013-08-29 => [4,4,6,9] 
  4. 2013-08-9 => [1,4,5,9] 
  5. 2013-08-5 => [1,8,7,8] 
  6. 2013-08-30 => [1,2,7,9] 
  7. 2013-08-1 => [1,2,5,9] 

Necesito ordenar las fechas y lo traté así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. foreach(sort(keys (%hashvalores))){
  2.    print "$_\n";
  3. }
  4.  
  5. # y quedó esto
  6.  
  7. #2013-08-1
  8. #2013-08-10
  9. #2013-08-11
  10. #2013-08-12
  11. #2013-08-13
  12. #2013-08-14
  13. #2013-08-15
  14. #2013-08-16
  15. #2013-08-17
  16. #2013-08-18
  17. #2013-08-19
  18. #2013-08-2
  19. #2013-08-20
  20. #2013-08-21
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4

Traté así
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. foreach(sort { $a <=> $b } keys %hashvalores){
  2.    print "$_\n";
  3. }
  4.  
  5. # no lo ordena y dice esto:
  6.  
  7. # Argument "\x{32}\x{30}..." isn´t numeric in sort at programa.pl line 239.
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Ayuda. Necesito ordenar cronológicamente las fechas.

Gracias por adelantado.
MARKO
Perlero nuevo
Perlero nuevo
 
Mensajes: 86
Registrado: 2012-01-10 22:34 @982

Publicidad

Re: Ordenar cronológicamente las llaves de una hash

Notapor explorer » 2013-11-08 05:14 @259

El problema está en el número de día, que no tiene el relleno del '0', como sí lo tiene el numero del mes. Si lo consigues cambiar, lo tienes solucionado con el primer sort() alfanumérico que muestras.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ordenar cronológicamente las llaves de una hash

Notapor kidd » 2013-11-08 18:50 @826

Prueba con el módulo Sort::Naturally
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Re: Ordenar cronológicamente las llaves de una hash

Notapor MARKO » 2013-11-11 13:42 @612

Gracias a los dos por sus respuestas.

La idea de explorer le dio solución al problema. Simplemente comparé si el día era menor a 10 y le agregué el 0 y con eso la función sort() funcionó de maravilla.

Gracias.
MARKO
Perlero nuevo
Perlero nuevo
 
Mensajes: 86
Registrado: 2012-01-10 22:34 @982


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 0 invitados