• Publicidad

Devolviendo hashes desde subrutina

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

Devolviendo hashes desde subrutina

Notapor MARKO » 2013-11-07 12:58 @582

Hola, perl en español, necesito ayuda con este problemilla.

Tengo una función que genera 3 hashes correctamente, pero a la hora de devolver dichos hashes hacia afuera solo devuelve el último.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub recoger_valores{
  2.    my (%hashuno, %hashdos, %hashtres) = &genera_hashes();
  3.    
  4.    use Data::Dumper::Simple;
  5.    warn Dumper(%hashuno, %hashdos, %hashtres);
  6. }
  7.  
  8. sub genera_hashes{
  9.    my (%primerhash, %segundohash, %tercerhash);
  10.    
  11.    {
  12.        #procedimientos que asignan valores a los hashes
  13.        #de una manera correcta.
  14.    }
  15.    return (%primerhash, %segundohash, %tercerhash);
  16. }
  17.  
  18. &recoger_valores;
  19.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Cuando invocamos &recoger_valores el Data::Dumper devuelve:
Sintáxis: [ Descargar ] [ Ocultar ]
  1. %hashuno = ( 
  2.       lunes => 15, 
  3.       martes => 25,  
  4.       . 
  5.       .         #datos de %tercerhash 
  6.       . 
  7.       ); 
  8.  
  9. %hashdos = (); 
  10. %hashtres = (); 

Ayuda, por favor, necesito que en %hashuno queden los valores de %primerhash, en %hashdos los valores de %segundohash y en %hashtres los valores de %tercerhash.

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

Publicidad

Re: Devolviendo hashes desde subrutina

Notapor explorer » 2013-11-07 13:42 @613

Pasando las variables por referencia:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub recoger_valores {
  2.     my ( $hashuno_ref, $hashdos_ref, $hashtres_ref ) = genera_hashes();
  3.  
  4.     use Data::Dumper::Simple;
  5.     warn Dumper( %$hashuno_ref, %$hashdos_ref, %$hashtres_ref );
  6. }
  7.  
  8. sub genera_hashes {
  9.     my ( %primerhash, %segundohash, %tercerhash );
  10.  
  11.     {
  12.         #procedimientos que asignan valores a los hashes
  13.         #de una manera correcta.
  14.     } return ( \%primerhash, \%segundohash, \%tercerhash );
  15. }
  16.  
  17. recoger_valores;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Más información en tu propio ordenador en perldoc perlref, y en la Web (traducido al español).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Devolviendo hashes desde subrutina

Notapor MARKO » 2013-11-07 20:18 @887

Muchísimas gracias, explorer, diste en el clavo.
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: No hay usuarios registrados visitando el Foro y 0 invitados