4 回答
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 已经发布,因此希望您不会出现这种情况。
引用致命文档
Fatal 已被新的 autodie pragma 淘汰。请使用 autodie 优先于 Fatal。autodie 支持词法作用域,抛出真正的异常对象,并提供更好的错误消息。
使用autodie而不是Fatal的另一个原因是为了避免这个错误(来自Fatal文档的 BUGS 部分):
致命破坏了调用函数的上下文,并始终使其成为标量上下文,除非使用 :void 标记。autodie 中不存在这个问题。
Paul Fenwick 的文章autodie - The art of Klingon Programming首先解释了 Fatal 的一些缺点。