## name Basic failure
## failures 6
## cut

do_something() if $condition;
do_something() while $condition;
do_something() until $condition;
do_something() unless $condition;
do_something() for @list;
do_something() foreach @list;

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

## name Configured to allow all
## failures 0
## parms {allow => 'if while until unless for foreach'}
## cut

do_something() if $condition;
do_something() while $condition;
do_something() until $condition;
do_something() unless $condition;
do_something() for @list;
do_something() foreach @list;

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

## name Configured to allow all, all regular control structures
## failures 0
## parms {allow => 'if unless until while'}
## cut

if($condition){ do_something() }
while($condition){ do_something() }
until($condition){ do_something() }
unless($condition){ do_something() }

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

## name Regular for loops
## failures 0
## cut

#PPI versions < 1.03 had problems with this
for my $element (@list){ do_something() }
for (@list){ do_something_else() }
foreach my $element (@list){ do_something() }
foreach (@list){ do_something_else() }

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

## name Legal postfix usage
## failures 0
## cut

use Carp;

while ($condition) {
    next if $condition;
    last if $condition;
    redo if $condition;
    return if $condition;
    goto HELL if $condition;
    exit if $condition;
}

die 'message' if $condition;
die if $condition;

warn 'message' if $condition;
warn if $condition;

carp 'message' if $condition;
carp if $condition;

croak 'message' if $condition;
croak if $condition;

cluck 'message' if $condition;
cluck if $condition;

confess 'message' if $condition;
confess if $condition;

exit 0 if $condition;
exit if $condition;

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

## name override exempt flowcontrols
## failures 0
## parms {flowcontrol => 'assert'}
## cut

use Carp::Assert;

assert $something if $condition;


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

## name overriding exempt flowcontrols restores the defaults
## failures 8
## parms {flowcontrol => 'assert'}
## cut

use Carp::Assert;

warn    $something if $condition;
die     $something if $condition;
carp    $something if $condition;
croak   $something if $condition;
cluck   $something if $condition;
confess $something if $condition;
exit    $something if $condition;
do_something() if $condition;

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

## name Individual "keyword" hash assignment
## failures 0
## cut

my %hash;
$hash{if} = 1;
$hash{unless} = 1;
$hash{until} = 1;
$hash{while} = 1;
$hash{for} = 1;
$hash{foreach} = 1;

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

## name "Keyword"-list hash assignment
## failures 0
## cut

my %hash = (
    if => 1,
    unless => 1,
    until => 1,
    while => 1,
    for => 1,
    foreach => 1,
);

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

##############################################################################
#      $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/Perl-Critic/t/ControlStructures/ProhibitPostfixControls.run $
#     $Date: 2008-03-16 17:40:45 -0500 (Sun, 16 Mar 2008) $
#   $Author: clonezone $
# $Revision: 2187 $
##############################################################################

# 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 :