Получать исключения из IO::File?

Модули IO::File, IO::Socket::INET имеют некоторые преимущества по сравнению с непосредственным использованием встроенных в Perl функций ввода-вывода, например, наличие явного синтаксиса для очистки дескриптора.

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

Есть ли способ объединить два или несколько других модулей, которые имеют объединенную функциональность? Я заметил, что некоторые модули ввода-вывода ограниченного назначения, такие как File::Slurp, позволяют более гибкую обработку ошибок.

Я пишу код модуля, и в идеале решение должно работать до Perl 5.10.0.

1 ответ

Вы смотрели на Path::Tiny? Синтаксис другой, но он генерирует исключения.

НАПРИМЕР

use Path::Tiny;
path('/non/existent/file')->openr;

умрет с объектом Path::Tiny::Exception (при условии, что у вас нет такого файла)

Другие вопросы по тегам