У меня есть две строки рядом друг с другом в сценарии Perl, который может выдать __WARN__
. Если первый выбрасывает, то я хочу просто вернуться из функции и не пытаться продолжить.
Я знаю, как настроить обработчик перед обеими строками, чтобы я мог сообщить об ошибке и т. Д .:
local $SIG{__WARN__} = sub {
my $e = shift;
# log the error etc.
return;
};
# possibly warning-resulting line 1
# possibly warning-resulting line 2
Но тогда это происходит для обеих линий. Я бы предпочел, чтобы он просто перехватил первый экземпляр и вернулся из функции. Но возвращение в этом обработчике возвращает только обработчик, а не внешнюю функцию.
Есть ли способ возврата из функции при обработке сигнала?