Получать исключения из 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 (при условии, что у вас нет такого файла)