В чем разница между модулями Perl autodie и Fatal? - PullRequest
5 голосов
/ 05 апреля 2010

Модули Perl autodie и Fatal , похоже, делают подобные вещи. Каковы причины использования одного предпочтения к другому?

Ответы [ 4 ]

10 голосов
/ 06 апреля 2010

Модуль Fatal был добавлен в ядро ​​Perl в версии 5.05 (1998). Модуль Fatal имеет некоторые существенные недостатки и несоответствия в своем API, которые нельзя исправить обратно совместимым способом (т. Е. Исправление API приведет к поломке существующего кода, который использует Fatal).

Более новый модуль autodie был написан для обеспечения более согласованного API и обеспечения возможности лексической области действия прагмы, а не глобальной (что может иметь неожиданные побочные эффекты).

Если у вас есть выбор, вам определенно следует выбрать autodie. Он будет включен в качестве основного модуля в следующей версии Perl 5.12.

Для модуля автозапуска требуется Perl 5.8. Единственная причина, по которой вы бы использовали Fatal, это если вы застряли на действительно старой версии Perl (например, 5.6), но с 2002 года вышла 5.8, так что, надеюсь, это не так.

6 голосов
/ 05 апреля 2010

Цитировать Фатальная документация

Fatal устарел из-за новой прагмы autodie. Пожалуйста, используйте autodie вместо Fatal. autodie поддерживает лексическую область видимости, генерирует объекты исключений и предоставляет гораздо более приятные сообщения об ошибках.

2 голосов
/ 25 февраля 2013

Статья Пола Фенвика autodie - искусство программирования клингона начинается с объяснения некоторых недостатков Фатала.

2 голосов
/ 05 апреля 2010

Другая причина использования autodie вместо Fatal состоит в том, чтобы избежать этой ошибки (из раздела BUGS документа Fatal ):

Фатальные удары в контексте, в котором функция вызывается и всегда делает это скалярный контекст, кроме случаев, когда : используется тег void. Эта проблема делает не существует в autodie.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...