Есть ли какой-нибудь Perl-модуль, который может помешать мне добавить `or die` ко всему, что может дать сбой? - PullRequest
11 голосов
/ 16 сентября 2009

Я пишу код, который выполняет всевозможные внешние команды, а также различные команды файловой системы, которые могут не работать.

Есть ли какой-нибудь модуль, который может избавить меня от необходимости добавлять 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 Ответ

32 голосов
/ 16 сентября 2009

Да. Выезд autodie из CPAN.

Из документов:

Прагма autodie предоставляет удобный способ замены функций, которые обычно возвращают
false при ошибке с эквивалентами, которые выдают исключение при ошибке.

Прагма autodie имеет лексическую область действия , что означает, что функции и подпрограммы изменены с autodie изменит их поведение только до конца включающего блока, файла или eval.

...