J'ai une fonction qui fait des calculs et passe ensuite quelques propriétés dans une autre sous-routine comme ceci:Comment puis-je utiliser des hachages comme arguments pour des sous-routines 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";
}
Mon problème est que les résultats imprimés en (résultat DIET, DIET VERDICT) et (IQ POINTAGE, IQ RÉSULTAT) sont les mêmes. Comme si les variables% d et% i étaient peuplées avec les mêmes variables. Des idées pourquoi c'est?
Si je tente de déplacer les trois variables comme ceci:
my $id = shift;
my %d = shift;
my %i = shift;
Je reçois l'erreur suivante:
Odd number of elements in hash assignment
Cela a fonctionné parfaitement. Je pense que j'ai mal interprété les références entre les différents types. (Scalaire, Array, Hash) Merci Manni –
Il pourrait être utile pour les autres si vous avez accepté la réponse alors. (Ce n'est pas que les 25 points de réputation me dérangeraient de quelque façon que ce soit.) – innaM