• Publicidad

Función devuelve hash

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

Función devuelve hash

Notapor silva » 2012-03-13 07:21 @348

Tengo una función que devuelve un conjunto de variables, entre ellos un hash.

1) Mi consulta es si se pueden generar problemas al devolver el parámetro como hash y no como una referencia a ese hash.

Sintáxis: [ Descargar ] [ Ocultar ]
  1. my ($var1, $var2, %hash, $ref_hash) = funcion(); 
  2. ..... 
  3.  
  4. sub funcion { 
  5.  
  6.  my $var1 = 2345; 
  7.  my $var2 = 'ldkdj'; 
  8.  my %hash = ..... 
  9.  my $ref_hash = \%hash; 
  10.  
  11.  ...... 
  12.  
  13.  return ($var1, $var2, %hash, $ref_hash); 


¿Cómo inserto elementos al %hash y a la referencia del mismo ?

¿Es correcto $hash{nombre} = 'Juana'; ?

¿Cómo inserto un valor a la referencia de ese hash? ¿ $ref_hash->{nombre} = 'Juana'; ?

¡¡¡Agradecido!!!
silva
Perlero nuevo
Perlero nuevo
 
Mensajes: 82
Registrado: 2011-05-24 05:59 @291

Publicidad

Re: Función devuelve hash

Notapor explorer » 2012-03-13 10:08 @464

En el return ($var1, $var2, %hash, $ref_hash); el único cambio que haría sería intercambiar las posiciones de %hash y $ref_hash: a la hora de recuperar los valores, el return() despliega las claves/valores del hash, en pares. Si el que llama a la función no sabe cuántos pares son, podría confundir el valor de $ref_hash como una clave más (a quien además, le faltaría un valor).

Es más... si $ref_hash es una referencia a %hash, no te hace falta devolver %hash. El que llame a esta función, solo necesitará $ref_hash para acceder al contenido del hash.
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: Función devuelve hash

Notapor silva » 2012-03-15 09:27 @435

¡¡Muchas gracias!!
Solo una cosa mas:
¿Cómo inserto un valor al hash, a partir de su referencia? ¿Es correcto lo siguiente?

$ref_hash->{nombre} = 'Juana';
silva
Perlero nuevo
Perlero nuevo
 
Mensajes: 82
Registrado: 2011-05-24 05:59 @291

Re: Función devuelve hash

Notapor explorer » 2012-03-15 10:12 @466

Sí, sí que es correcto.

Tienes más información en perldsc y perlref.

En caso de dudas, siempre se puede contar con el amigo Data::Dumper:

use Data::Dumper;
print Dumper($ref_hash);

que te mostrará la estructura de datos.

(Casi mejor usar Data::Dumper::Simple o Data::Dumper::Names).
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


Volver a Básico

¿Quién está conectado?

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

cron