Como posso usar hashes como argumentos para sub-rotinas em Perl?

Fui solicitado a modificar algum código existente para adicionar algumas funcionalidades adicionais. Eu pesquisei no Google e não consigo encontrar a resposta. Eu tenho algo para esse efeito ...

%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
}

Estou recebendo os seguintes erros:

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.

Linha 85 e 86 são as duas primeiras linhas na sub rotina e 124 e 143 são onde eu estou acessando os hashes. Quando procuro esses erros, parece sugerir que meus hashes não são inicializados. No entanto, posso verificar se os hashes têm valores. Por que estou recebendo esses erros?

questionAnswers(4)

yourAnswerToTheQuestion