The Perl Advent Calendar needs more articles for 2022. Submit your idea today!


Perl::Critic::Policy::Variables::ProhibitAugmentedAssignmentInDeclaration - Do not write my $foo .= 'bar'; .


This Policy is part of the core Perl::Critic distribution.


Variable declarations that also do initialization with '=' are common. Perl also allows you to use operators like '.=', '+=', etc., but it it is more clear to not do so.

    my $foo .= 'bar';              # same as my $foo = 'bar';
    our $foo *= 2;                 # same as our $foo = 0;
    my ( $foo, $bar ) += ( 1, 2 ); # same as my ( $foo, $bar ) = ( undef, 2 );
    local $Carp::CarpLevel += 1;   # same as local $Carp::CarpLevel = 1;
    state $foo += 2;               # adds 2 every time it's encountered

Such constructs are usually the result of botched cut-and-paste, and often are bugs. Some produce warnings.


This Policy is not configurable except for the standard options.


Mike O'Regan


Copyright (c) 2011-2021 Mike O'Regan. All 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.