Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

perl::critic::policy::inputoutput::prohibitjoinedreadline(3pm) [debian man page]

Perl::Critic::Policy::InputOutput::ProhibitJoinedReadlinUsermContributed Perl DocumePerl::Critic::Policy::InputOutput::ProhibitJoinedReadline(3pm)

NAME
Perl::Critic::Policy::InputOutput::ProhibitJoinedReadline - Use "local $/ = undef" or File::Slurp instead of joined readline. AFFILIATION
This Policy is part of the core Perl::Critic distribution. DESCRIPTION
It's really easy to slurp a whole filehandle in at once with "join q{}, <$fh">, but that's inefficient -- Perl goes to the trouble of splitting the file into lines only to have that work thrown away. To save performance, either slurp the filehandle without splitting like so: do { local $/ = undef; <$fh> } or use File::Slurp, which is even faster. Note that if the "ProhibitPunctuationVars" policy is also in effect, it will complain about the use of $/ in the line above. In that case, write this instead: use English '-no_match_vars'; do { local $INPUT_RECORD_SEPARATOR = undef; <$fh> }; CONFIGURATION
This Policy is not configurable except for the standard options. CAVEATS
Due to a bug in the current version of PPI (v1.119_03) and earlier, the readline operator is often misinterpreted as less-than and greater- than operators after a comma. Therefore, this policy only works well on the empty filehandle, "<>". When PPI is fixed, this should just start working. CREDITS
Initial development of this policy was supported by a grant from the Perl Foundation. AUTHOR
Chris Dolan <cdolan@cpan.org> COPYRIGHT
Copyright (c) 2007-2011 Chris Dolan. Many 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 perl v5.14.2 2012-06-07 Perl::Critic::Policy::InputOutput::ProhibitJoinedReadline(3pm)

Check Out this Related Man Page

Perl::Critic::Policy::Variables::RequireLocalizedPunctuaUserVContributed PerlPerl::Critic::Policy::Variables::RequireLocalizedPunctuationVars(3pm)

NAME
Perl::Critic::Policy::Variables::RequireLocalizedPunctuationVars - Magic variables should be assigned as "local". AFFILIATION
This Policy is part of the core Perl::Critic distribution. DESCRIPTION
Punctuation variables (and their English.pm equivalents) are global variables. Messing with globals is dangerous in a complex program as it can lead to very subtle and hard to fix bugs. If you must change a magic variable in a non-trivial program, do it in a local scope. For example, to slurp a filehandle into a scalar, it's common to set the record separator to undef instead of a newline. If you choose to do this (instead of using File::Slurp!) then be sure to localize the global and change it for as short a time as possible. # BAD: $/ = undef; my $content = <$fh>; # BETTER: my $content; { local $/ = undef; $content = <$fh>; } # A popular idiom: my $content = do { local $/ = undef; <$fh> }; This policy also allows the use of "my". Perl prevents using "my" with "proper" punctuation variables, but allows $a, @ARGV, the names declared by English, etc. This is not a good coding practice, however it is not the concern of this specific policy to complain about that. There are exemptions for $_ and @_, and the English equivalent $ARG. CONFIGURATION
You can configure your own exemptions using the "allow" option: [Variables::RequireLocalizedPunctuationVars] allow = @ARGV $ARGV These are added to the default exemptions. CREDITS
Initial development of this policy was supported by a grant from the Perl Foundation. AUTHOR
Chris Dolan <cdolan@cpan.org> COPYRIGHT
Copyright (c) 2007-2011 Chris Dolan. Many 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. perl v5.14.2 2012-06-0Perl::Critic::Policy::Variables::RequireLocalizedPunctuationVars(3pm)
Man Page