Perl::Critic::Policy::InputOutput::RequireCheckedSyscalls - Return value of flagged function ignored.
This Policy is part of the core Perl::Critic distribution.
This performs identically to InputOutput::RequireCheckedOpen/Close except that this is configurable to apply to any function, whether core or user-defined.
use Fatal qw(open); open my $fh, $filename; # no violation close $fh; # yes violation use autodie; open $filehandle, $mode, $filename; # no violation
Currently, autodie is not properly treated as a pragma; its lexical effects aren't taken into account.
This policy watches for a configurable list of function names. By default, it applies to
close. You can override this to set it to a different list of functions with the
exclude_functions settings. To do this, put entries in a .perlcriticrc file like this:
[InputOutput::RequireCheckedSyscalls] functions = open opendir read readline readdir close closedir
We have defined a few shortcuts for creating this list
[InputOutput::RequireCheckedSyscalls] functions = :defaults opendir readdir closedir [InputOutput::RequireCheckedSyscalls] functions = :builtins [InputOutput::RequireCheckedSyscalls] functions = :all
:builtins shortcut above represents all of the builtin functions that have error conditions (about 65 of them, many of them rather obscure).
You can require checking all builtins except
[InputOutput::RequireCheckedSyscalls] functions = :builtins exclude_functions = print
This is a lot easier to read than the alternative.
:all is the insane case: you must check the return value of EVERY function call, even
exit. Yes, this "feature" is overkill and is wasting CPU cycles on your computer by just existing. Nyah nyah. I shouldn't code after midnight.
If you create a module that exports
autodie you can tell this policy about it with the
[InputOutput::RequireCheckedSyscalls] autodie_modules = My::Thing
Initial development of this policy was supported by a grant from the Perl Foundation.
This policy module is based heavily on policies written by Andrew Moore <firstname.lastname@example.org>.
Chris Dolan <email@example.com>
Copyright (c) 2007-2011 Chris Dolan. Many rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of this license can be found in the LICENSE file included with this module.