В учебных целях я играю с идеей построения
управляемые событиями программы на Perl, и заметил, что было бы неплохо, если бы
подпрограмма, которая была зарегистрирована как обработчик события, могла, в случае сбоя,
просто запланируйте еще один звонок себе на потом. Пока у меня есть
придумать что-то вроде этого:
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
Есть ли способ, которым код внутри подпрограммы может получить доступ к coderef к этому
саб, чтобы я мог обойтись без использования дополнительной переменной? Я бы хотел
запланировать начальный звонок, как это.
schedule_event( sub { ... }, 0);
Сначала я подумал об использовании caller(0)[3]
, но это только дает мне
имя функции (__ANON__
, если имени нет), а не ссылка на код
к нему прикреплена накладка.