2013-12-19 49 views
7

IO :: File,IO :: Socket :: INET模块比直接使用perl的内置IO函数具有一些优点,例如具有显式语法来刷新句柄。从IO :: File获取异常?

但是,它们似乎比内置IO功能有一些缺点。例如,据我所知,他们不能与autodie模块组合以在失败时引发异常,所以我发现自己不得不编写更多的样板代码来处理失败,而不是使用内置函数。

有没有办法将两者或其他一些具有组合功能的模块结合起来?我注意到一些有限的目的IO模块,例如File :: Slurp,确实允许更灵活的错误处理。

我正在写模块代码,理想情况下,解决方案应该一路回到perl 5.10.0。

+8

注意,文件句柄/包含'反正IO :: File'对象(给定一个足够现代的perl,或者'use IO :: File'来加载方法) - 所以你可以使用像open这样的内建函数而不会放弃OOP特性。 – amon

回答

2

你看过Path :: Tiny吗?语法不同,但它确实会抛出异常。

E.G.

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

将与路径死::微型:: Exception对象(假设你没有这样的文件)