This performs identically to InputOutput::RequireCheckedOpen/Close except that this is configurable to apply to any function, whether core or user-defined.

If your module uses the Fatal manpage or Fatal::Exception, then any functions wrapped by those modules will not trigger this policy. For example:

   use Fatal qw(open);
   open my $fh, $filename;  # no violation
   close $fh;               # yes violation


This policy watches for a configurable list of function names. By default, it applies to open, print and close. You can override this to set it to a different list of functions with the functions setting. To do this, put entries in a .perlcriticrc file like this:

  functions = open opendir read readline readdir close closedir

We have defined a few shortcuts for creating this list

  functions = :defaults opendir readdir closedir
  functions = :builtins
  functions = :all

The :builtins shortcut above represents all of the builtin functions that have error conditions (about 65 of them, many of them rather obscure).

The :all is the insane case: you must check the return value of EVERY function call, even return and 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.


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 <amoore@mooresystems.com>


Chris Dolan <cdolan@cpan.org>


Copyright (c) 2007 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.