Como funcionam os fechamentos no Perl?

Novato em Perl novamente aqui, tentando entenderclosure em Perl.

Então aqui está um exemplo de código que eu não entendo:

sub make_saying  {
    my $salute = shift;
    my $newfunc = sub {
        my $target = shift;
        print "$salute, $target!\n";
    };
    return $newfunc;            # Return a closure
}
$f = make_saying("Howdy");      # Create a closure
$g = make_saying("Greetings");  # Create another closure
# Time passes...
$f->("world");
$g->("earthlings");

Então minhas perguntas são:

Se uma variável é atribuída a uma função, é automaticamente uma referência a essa função?Naquele código acima, posso escrever$f = \make_saying("Howdy") em vez de? E quando posso usar o& porque eu tentei usar isso para passar os parâmetros (&$f("world")) mas não funciona.e por último, nesse código acima como ele fez as palavrasworld eearthlings é adicionado às palavrashowdy egreetings.

Nota: Eu entendo que $ f é um pouco ligado à função com o parâmetrohowdy então essa é a minha compreensão como oworld foi adicionado. O que eu não entendo é a segunda função dentro. Como esse alguém opera sua mágica. Desculpe eu realmente não sei como perguntar isso.

questionAnswers(3)

yourAnswerToTheQuestion