¿Cómo funcionan los cierres en Perl?

Newbie en Perl otra vez aquí, tratando de entenderclosure en perl.

Así que aquí hay un ejemplo de código que no entiendo:

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

Así que mis preguntas son:

Si se asigna una variable a una función, ¿es automáticamente una referencia a esa función?En ese código anterior, puedo escribir$f = \make_saying("Howdy") ¿en lugar? Y cuando puedo usar el& porque intenté usar eso para pasar los parámetros (&$f("world")) pero no funciona.y por último, en ese código anterior, ¿cómo en él ** hicieron las palabrasworld yearthlings anexarse ​​a las palabrashowdy ygreetings.

Nota: entiendo que $ f está algo ligado a la función con el parámetrohowdy así que esa es mi comprensión de cómo elworld se anexó Lo que no entiendo es la segunda función interna. Cómo opera esa su magia. Lo siento, realmente no sé cómo preguntar esto.

Respuestas a la pregunta(3)

Su respuesta a la pregunta