The Perl modules autodie and Fatal seem to be doing similar things. What are the reasons for using one in preference to the other?
The Fatal module was added to the Perl core in version 5.05 (1998). The Fatal module has some significant shortcomings and inconsistencies in its API which couldn't be fixed in a backwards compatible way (ie: fixing the API would break existing code which used Fatal).
The newer autodie module was written to provide a more consistent API and to allow the effect of the pragma to be lexically scoped rather than global (which can have unexpected side effects).
If you have a choice, you should definitely prefer autodie. It will be included as a core module in the upcoming 5.12 release of Perl.
The autodie module requires Perl 5.8. About the only reason you'd use Fatal is if you were stuck with a really old version of Perl (eg: 5.6), but 5.8 has been out since 2002 so hopefully that won't be the case for you.
To quote the Fatal documentation
Fatal has been obsoleted by the new autodie pragma. Please use autodie in preference to Fatal. autodie supports lexical scoping, throws real exception objects, and provides much nicer error messages.
© 2022 - 2024 — McMap. All rights reserved.