Mam funkcja, która robi niektóre obliczenia i następnie przechodzi niektóre właściwości do innego podprogramu tak:Jak używać skrótów jako argumentów dla podprogramów w Perlu?
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";
}
Moim problemem jest to, że wyniki drukowane w (dieta rezultacie DIET werdykt) i (IQ wynik IQ WYNIK) są takie same. Tak jakby zmienne% d i% i były zapełniane tymi samymi zmiennymi. Jakieś pomysły, dlaczego tak jest?
jeśli próbuję przeniesienie wszystkich trzech zmiennych tak:
my $id = shift;
my %d = shift;
my %i = shift;
pojawia się następujący błąd:
Odd number of elements in hash assignment
To działało idealnie. Myślę, że źle interpretowałem odniesienia między różnymi typami. (Scalar, Array, Hash) Dzięki Manni –
Może to być pomocne dla innych, jeśli zaakceptowałeś wtedy odpowiedź. (Nie, żebym miał jakikolwiek wpływ na 25 punktów reputacji.) – innaM