Jak mogę użyć skrótów jako argumentów do podprogramów w Perlu?

Poproszono mnie o zmodyfikowanie istniejącego kodu, aby dodać dodatkowe funkcje. Szukałem w Google i nie mogę znaleźć odpowiedzi. Mam coś na ten cel ...

%first_hash = gen_first_hash();
%second_hash = gen_second_hash();
do_stuff_with_hashes(%first_hash, %second_hash);

sub do_stuff_with_hashes
{
    my %first_hash = shift;
    my %second_hash = shift;

    # do stuff with the hashes
}

Dostaję następujące błędy:

Odd number of elements in hash assignment at ./gen.pl line 85.
Odd number of elements in hash assignment at ./gen.pl line 86.
Use of uninitialized value in concatenation (.) or string at ./gen.pl line 124.
Use of uninitialized value in concatenation (.) or string at ./gen.pl line 143.

Linia 85 i 86 to pierwsze dwie linie w podprogramie, a 124 i 143 to miejsca, w których uzyskuję dostęp do skrótów. Kiedy sprawdzam te błędy, wydaje się, że moje skróty są niezainicjowane. Mogę jednak zweryfikować, czy wartości skrótu mają wartości. Dlaczego otrzymuję te błędy?

questionAnswers(4)

yourAnswerToTheQuestion