• Publicidad

Duda con Data::Dumper

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

Duda con Data::Dumper

Notapor fgalves » 2007-06-01 02:21 @139

Hola a todos,

Mi problema es el siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$ref = modulo::funcion($parametro);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Dicha función lo que hace es devolverme la referencia a un HASH determinado. Por ejemplo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
 return {
        Param1              => $1,
        Param2              => $2,
        Param3            => $3,
        Param4             => $4
    };
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


De momento lo que hago es hacer un print Dumper de dicha variable $ref. Me imprime el HASH correctamente, pero las claves (keys) del hash me salen desordenadas...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print Dumper $ref;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Lo que yo quiero es hacer un print Dumper, pero ordenado por llave...

He intentado lo siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my %ref = %$ref;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Para posteriormente aplicar un bucle del estilo siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
foreach my $key (sort keys %ref ) {...}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Pero no me parece funcionar...

¿Alguien me puede echar una manita?
¡Un saludo!
Felipe
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Publicidad

Notapor explorer » 2007-06-01 04:21 @223

En un hash, las claves siempre están desordenadas. O mejor dicho, no sabemos en qué orden las va a almacenar Perl.

Con la ayuda de módulos como Tie::DxHash se pueden hacer hashes con claves que mantienen su orden, pero no es lo normal.

¿A qué te refieres con lo que no te funciona lo de %ref = %$ref?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

sub funcion {

  return {
      Param1 => 1,
      Param2 => 2,
      Param3 => 3,
      Param4 => 4
  };
}

$ref = funcion();

%ref = %$ref;

foreach my $key (sort keys %ref ) {

  print "$key => $ref{$key}\n";

}

__OUTPUT__
Param1 => 1
Param2 => 2
Param3 => 3
Param4 => 4
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor fgalves » 2007-06-01 06:41 @320

¡Muchas gracias Explorer!
De hecho mi código tenía un pequeño fallo pero ahora me ha quedado muy claro con tu ejemplo.
¡Muchas gracias!
Saludos,
Felipe
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados