En Perl, ¿cómo puede una subrutina obtener un coderef que apunte a sí mismo?

Con fines de aprendizaje, estoy jugando con la idea de crear programas basados en eventos en Perl y me di cuenta de que podría ser bueno si una subrutina registrada como controlador de eventos pudiera, en caso de falla, simplemente programar otra llamada para sí mismo para más adelante. hora. Hasta ahora, se me ocurrió algo como esto:

my $cb;
my $try = 3;
$cb = sub {
    my $rc = do_stuff();
    if (!$rc && --$try) {
        schedule_event($cb, 10); # schedule $cb to be called in 10 seconds
    } else {
        do_other_stuff;
    }
};
schedule_event($cb, 0); # schedule initial call to $cb to be performed ASAP

¿Hay alguna manera de que el código dentro del sub pueda acceder al coderef a ese sub para que pueda hacerlo sin usar una variable adicional? Me gustaría programar la llamada inicial de esta manera.

schedule_event( sub { ... }, 0);

Primero pensé en usarcaller(0)[3], pero esto solo me da un nombre de función, (__ANON__ si no hay nombre), no una referencia de código que tenga un pad adjunto.

Respuestas a la pregunta(5)

Su respuesta a la pregunta