Tengo una función que está haciendo algunos cálculos y luego pasa algunas propiedades en otra subrutina de este modo:¿Cómo puedo usar los hashes como argumentos para las subrutinas en Perl?
sub get_result {
my $id = 1;
my %diet = (result => 28,
verdict => 'EAT MORE FRUIT DUDE...'
);
my %iq = (result => 193,
verdict => 'Professor Einstien'
);
print_result($id, %diet, %iq);
}
sub print_result {
my $id = shift;
my %d = @_;
my %i = @_;
print "IQ: $id\n";
print "DIET RESULT: $d{result}\n";
print "DIET VERDICT: $d{verdict}\n";
print "IQ RESULT: $i{result}\n";
print "IQ VERDICT: $i{verdict}\n";
}
Mi problema es que los resultados impresos en (RESULTADO, la dieta VEREDICTO) y (índice de inteligencia, IQ RESULTADO) son los mismos. Como si la variable% d y% i estuvieran pobladas con las mismas variables. ¿Alguna idea de por qué es esto?
si intento cambiando las tres variables de este modo:
my $id = shift;
my %d = shift;
my %i = shift;
me sale el siguiente error:
Odd number of elements in hash assignment
Esto funcionó perfecto. Creo que estaba malinterpretando las referencias entre los diversos tipos. (Escalar, Matriz, Hash) Gracias Manni –
Puede ser útil para otros si aceptó la respuesta. (No es que me importen los 25 puntos de reputación de ninguna manera). – innaM