The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
## name passes by assigning error variable
## failures 0
## cut

my $error = close( $filehandle );
my $error = close  $filehandle;
my $error = close  CLOSE;
my $error = close  OR;

#-----------------------------------------------------------------------------

## name passes by "or die"
## failures 0
## cut

close  $filehandle  or die 'could not close';
close ($filehandle) or die 'could not close';
close ($filehandle) or croak 'could not close';

#-----------------------------------------------------------------------------

## name passes by "|| die"
## failures 0
## cut

close  $filehandle  || die 'could not close';
close ($filehandle) || die 'could not close';
close ($filehandle) || croak 'could not close';

#-----------------------------------------------------------------------------

## name passes by "unless"
## failures 0
## cut

die unless close ( $filehandle );
die unless close   $filehandle;

croak unless close ( $filehandle );
croak unless close   $filehandle;

#-----------------------------------------------------------------------------

## name passes by "if not"
## failures 0
## cut

die if not close ( $filehandle );
die if not close   $filehandle;

croak if not close ( $filehandle );
croak if not close   $filehandle;

die if !close ( $filehandle );
die if !close   $filehandle;

croak if !close ( $filehandle );
croak if !close   $filehandle;

#-----------------------------------------------------------------------------

## name passes with "if" statement
## failures 0
## cut

if ( close $filehandle ) { dosomething(); };

#-----------------------------------------------------------------------------

## name Basic failure with parens
## failures 1
## cut

close( $filehandle );

#-----------------------------------------------------------------------------

## name Basic failure no parens
## failures 1
## cut

close $filehandle;

#-----------------------------------------------------------------------------

## name Fatal.pm on
## failures 0
## cut

use Fatal qw(close);
close $filehandle;

#-----------------------------------------------------------------------------

## name Fatal.pm on
## failures 0
## cut

use Fatal 'close';
close $filehandle;

#-----------------------------------------------------------------------------

## name Fatal.pm on
## failures 0
## cut

use Fatal ('close');
close $filehandle;

#-----------------------------------------------------------------------------

## name Fatal::Exception on
## failures 0
## cut

use Fatal::Exception 'Exception' => qw(close);
close $filehandle;

#-----------------------------------------------------------------------------

## name Fatal.pm off
## failures 1
## cut

use Fatal qw(open);
close $filehandle;

#-----------------------------------------------------------------------------

## name autodie on via no parameters
## failures 0
## cut

use autodie;
close $filehandle;

#-----------------------------------------------------------------------------

## name autodie on via :io
## failures 0
## cut

use autodie qw< :io >;
close $filehandle;

#-----------------------------------------------------------------------------

## name autodie off
## failures 1
## cut

use autodie qw< :system >;
close $filehandle;

#-----------------------------------------------------------------------------

## name autodie on and off
## failures 1
## TODO need to handle autodie lexically.
## cut

use autodie;
{
    no autodie;

    close $filehandle;
}

#-----------------------------------------------------------------------------
# Local Variables:
#   mode: cperl
#   cperl-indent-level: 4
#   fill-column: 78
#   indent-tabs-mode: nil
#   c-indentation-style: bsd
# End:
# ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :