6

Perl 模块 autodieFatal似乎在做类似的事情。优先使用其中一种的原因是什么?

4

4 回答 4

11

Fatal 模块在版本 5.05 (1998) 中被添加到 Perl 核心。Fatal 模块在其 API 中有一些明显的缺点和不一致,无法以向后兼容的方式修复(即:修复 API 会破坏使用 Fatal 的现有代码)。

编写较新的 autodie 模块是为了提供更一致的 API,并允许 pragma 的效果在词法范围内而不是全局范围内(这可能会产生意想不到的副作用)。

如果你有选择,你绝对应该更喜欢 autodie。它将作为核心模块包含在即将发布的 Perl 5.12 版本中。

autodie 模块需要 Perl 5.8。您使用 Fatal 的唯一原因是如果您坚持使用非常旧的 Perl 版本(例如:5.6),但自 2002 年以来 5.8 已经发布,因此希望您不会出现这种情况。

于 2010-04-06T01:02:23.970 回答
7

引用致命文档

Fatal 已被新的 autodie pragma 淘汰。请使用 autodie 优先于 Fatal。autodie 支持词法作用域,抛出真正的异常对象,并提供更好的错误消息。

于 2010-04-05T11:23:08.423 回答
2

使用autodie而不是Fatal的另一个原因是为了避免这个错误(来自Fatal文档的 BUGS 部分):

致命破坏了调用函数的上下文,并始终使其成为标量上下文,除非使用 :void 标记。autodie 中不存在这个问题。

于 2010-04-05T13:16:27.870 回答
2

Paul Fenwick 的文章autodie - The art of Klingon Programming首先解释了 Fatal 的一些缺点。

于 2013-02-25T10:03:25.483 回答