The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
## name Assignment and op-assignment
## failures 3
## cut

@bar = map {$_ = 1} @foo;
@bar = map {$_ *= 2} @foo;
@bar = map {$_++} @foo;

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

## name ++ and -- operators
## failures 2
## cut

@bar = map {++$_} @foo;
@bar = map {--$_} @foo;

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

## name Explicit regexes
## failures 3
## cut

@bar = map {$_ =~ s/f/g/} @foo;
@bar = map {$_ =~ tr/f/g/} @foo;
@bar = map {$_ =~ y/f/g/} @foo;

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

## name Simple implicit regexps
## failures 3
## cut

@bar = map {s/f/g/} @foo;
@bar = map {tr/f/g/} @foo;
@bar = map {y/f/g/} @foo;

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

## name "Hidden" implicit regexps
## failures 3
## cut

@bar = map {my $c = s/f/g/g; $c} @foo;
@bar = map {my $c = tr/f/g/g; $c} @foo;
@bar = map {my $c = y/f/g/g; $c} @foo;

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

## name Implicit chomp-ish builtins
## failures 2
## cut

@bar = map {chop} @foo;
@bar = map {chomp} @foo;
@bar = map {undef} @foo;

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

## name Explicit chomp-ish builtins
## failures 3
## cut

@bar = map {chop $_} @foo;
@bar = map {chomp $_} @foo;
@bar = map {undef $_} @foo;

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

## name substr
## failures 1
## cut

@bar = map {substr $_, 0, 1, 'f'} @foo;

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

## name Non-mutators
## failures 0
## cut

@bar = map {$_} @foo;
@bar = map {$_ => 1} @foo;
@bar = map {m/4/} @foo;
@bar = map {my $s=$_; chomp $s; $s} @foo;

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

## name Value given for list_funcs passing
## failures 0
## parms {list_funcs => ' foo bar '}
## cut

@bar = map {$_=1} @foo;
@bar = foo {$_} @foo;
@bar = baz {$_=1} @foo;

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

## name Value given for list_funcs failure
## failures 1
## parms {list_funcs => ' foo bar '}
## cut

@bar = foo {$_=1} @foo;

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

## name Value given for add_list_funcs
## failures 2
## parms {add_list_funcs => ' foo bar '}
## cut

@bar = map {$_=1} @foo;
@bar = foo {$_=1} @foo;

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

## name Accept non-mutating tr/// function. RT 44515
## failures 0
## cut

@bar = map {$_ =~ tr/f//} @foo;
@bar = map {$_ =~ tr/f//c} @foo;
@bar = map {$_ =~ tr/f/f/} @foo;
@bar = map {$_ =~ tr/f/f/d} @foo;
@bar = map {$_ =~ y/f//} @foo;
@bar = map {$_ =~ y/f//c} @foo;
@bar = map {$_ =~ y/f/f/} @foo;
@bar = map {$_ =~ y/f/f/d} @foo;
@bar = map {tr/f//} @foo;
@bar = map {tr/f//c} @foo;
@bar = map {tr/f/f/} @foo;
@bar = map {tr/f/f/d} @foo;
@bar = map {y/f//} @foo;
@bar = map {y/f//c} @foo;
@bar = map {y/f/f/} @foo;
@bar = map {y/f/f/d} @foo;
@bar = map {my $c = tr/f//; $c} @foo;
@bar = map {my $c = tr/f//c; $c} @foo;
@bar = map {my $c = tr/f/f/; $c} @foo;
@bar = map {my $c = tr/f/f/d; $c} @foo;
@bar = map {my $c = y/f//; $c} @foo;
@bar = map {my $c = y/f//c; $c} @foo;
@bar = map {my $c = y/f/f/; $c} @foo;
@bar = map {my $c = y/f/f/d; $c} @foo;

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

## name Recognize mutating tr/// function. RT 44515
## failures 24
## cut

@bar = map {$_ =~ tr/f//d} @foo;
@bar = map {$_ =~ tr/f/f/c} @foo;
@bar = map {$_ =~ tr/f//s} @foo;
@bar = map {$_ =~ tr/f/f/s} @foo;
@bar = map {$_ =~ y/f//d} @foo;
@bar = map {$_ =~ y/f/f/c} @foo;
@bar = map {$_ =~ y/f//s} @foo;
@bar = map {$_ =~ y/f/f/s} @foo;
@bar = map {tr/f//d} @foo;
@bar = map {tr/f/f/c} @foo;
@bar = map {tr/f//s} @foo;
@bar = map {tr/f/f/s} @foo;
@bar = map {y/f//d} @foo;
@bar = map {y/f/f/c} @foo;
@bar = map {y/f//s} @foo;
@bar = map {y/f/f/s} @foo;
@bar = map {my $c = tr/f//d; $c} @foo;
@bar = map {my $c = tr/f/f/c; $c} @foo;
@bar = map {my $c = tr/f//s; $c} @foo;
@bar = map {my $c = tr/f/f/s; $c} @foo;
@bar = map {my $c = y/f//d; $c} @foo;
@bar = map {my $c = y/f/f/c; $c} @foo;
@bar = map {my $c = y/f//s; $c} @foo;
@bar = map {my $c = y/f/f/s; $c} @foo;

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

## name Recognize non-mutating s///r function introduced in 5.13.2.
## failures 0
## cut

@bar = map { s/cat/dog/r } @foo;

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

##############################################################################
#      $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/distributions/Perl-Critic/t/ControlStructures/ProhibitMutatingListFunctions.run $
#     $Date: 2010-06-25 14:35:59 -0500 (Fri, 25 Jun 2010) $
#   $Author: wyant $
# $Revision: 3854 $
##############################################################################

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