1 ##############################################################################
2 # $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/Perl-Critic/lib/Perl/Critic/Policy/ValuesAndExpressions/ProhibitImplicitNewlines.pm $
3 # $Date: 2008-07-03 10:19:10 -0500 (Thu, 03 Jul 2008) $
6 ##############################################################################
8 package Perl::Critic::Policy::ValuesAndExpressions::ProhibitImplicitNewlines;
15 use Perl::Critic::Utils qw{ :severities :classification };
16 use base 'Perl::Critic::Policy';
18 our $VERSION = '1.088';
20 #-----------------------------------------------------------------------------
22 Readonly::Scalar my $DESC => q{Literal line breaks in a string};
23 Readonly::Scalar my $EXPL => [60,61];
25 #-----------------------------------------------------------------------------
27 sub supported_parameters { return () }
28 sub default_severity { return $SEVERITY_MEDIUM }
29 sub default_themes { return qw( core pbp cosmetic ) }
30 sub applies_to { return 'PPI::Token::Quote' }
32 #-----------------------------------------------------------------------------
35 my ( $self, $elem, undef ) = @_;
37 return if $elem->string !~ m/\n/xms;
39 return $self->violation( $DESC, $EXPL, $elem );
46 #-----------------------------------------------------------------------------
52 Perl::Critic::Policy::ValuesAndExpressions::ProhibitImplicitNewlines - Use concatenation or HEREDOCs instead of literal line breaks in strings.
56 This Policy is part of the core L<Perl::Critic> distribution.
61 Strings with embedded line breaks are hard to read. Use concatenation
64 my $foo = "Line one is quite long
67 my $foo = "Line one is quite long\nLine two"; # Better, but still hard to read
69 my $foo = "Line one is quite long\n"
70 . "Line two"; # Better still
72 my $foo = <<'EOF'; # Use heredoc for longer passages
73 Line one is quite long
75 Line three breaks the camel's back
81 This Policy is not configurable except for the standard options.
86 Chris Dolan <cdolan@cpan.org>
90 Initial development of this policy was supported by a grant from the Perl
95 Copyright (c) 2007-2008 Chris Dolan. Many rights reserved.
97 This program is free software; you can redistribute it and/or modify
98 it under the same terms as Perl itself. The full text of this license
99 can be found in the LICENSE file included with this module.
105 # cperl-indent-level: 4
107 # indent-tabs-mode: nil
108 # c-indentation-style: bsd
110 # ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :