Jak działają zamknięcia w Perlu?

Nowicjusz w Perlu znowu tutaj, próbując zrozumiećclosure w Perlu.

Oto przykład kodu, którego nie rozumiem:

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");

Moje pytania to:

Jeśli zmienna jest przypisana do funkcji, czy jest to automatycznie odniesienie do tej funkcji?W powyższym kodzie mogę napisać$f = \make_saying("Howdy") zamiast? A kiedy mogę użyć& ponieważ próbowałem użyć tego przy przekazywaniu parametrów (&$f("world")) ale to nie działa.i wreszcie, w tym kodzie powyżej, w jaki sposób on zrobił słowaworld iearthlings dołącz do słówhowdy igreetings.

Uwaga: Rozumiem, że $ f jest w pewien sposób powiązany z funkcją z parametremhowdy tak rozumiem, jakworld został dołączony. Czego nie rozumiem, to druga funkcja wewnątrz. Jak to działa swoją magią. Przepraszam, naprawdę nie wiem, jak zapytać o to.

questionAnswers(3)

yourAnswerToTheQuestion