Есть ли какой-либо модуль 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.