У меня есть функция, которая выполняет некоторые вычисления, а затем передает некоторые свойства в другую подпрограмму, например:
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";
}
Моя проблема в том, что результаты, напечатанные в (DIET RESULT, DIET VERDICT) и (IQ SCORE, IQ RESULT), совпадают. Как будто переменные% d и% i заполняются одинаковыми переменными. Есть идеи, почему это так?
Если я попытаюсь сместить все три переменные следующим образом:
my $id = shift;
my %d = shift;
my %i = shift;
Я получаю следующую ошибку:
Odd number of elements in hash assignment