Есть ли какой-либо модуль Perl, который может помешать мне добавить "или умереть" во все, что может потерпеть неудачу?
Я пишу код, который запускает всевозможные внешние команды, а также различные команды файловой системы, которые могут выйти из строя.
Есть ли какой-нибудь модуль, который может сэкономить мне трудность добавления or die
ко всему, что может быть неудачно?
Я хотел бы иметь возможность обернуть следующее в чем-то, чтобы вместо:
mkdir $dirname or die "can't create directory $dirname";
system("some external command") or die "can run some external command";
Я получаю:
some_wrapper_code {
mkdir $dirname;
system("some external command");
}
так что если mkdir
не работает, он скажет мне, что сбой был в mkdir
, а если system
не удалось, он скажет мне, что сбой был в system
.
Ответы
Ответ 1
Угу. Проверьте autodie
из CPAN.
Из документов:
Прагма autodie
обеспечивает удобный способ замены функций, которые обычно возвращаются false при ошибке с эквивалентами, которые генерируют исключение при ошибке.
Прагма autodie
имеет лексическую область действия, что означает, что функции и подпрограммы, измененные с помощью autodie
изменяет свое поведение только до конца прилагаемого блока, файла или eval
.