in reply to PerlCritic, $_ and map
The Perl::Critic policy in question is Perl::Critic::Policy::ControlStructures::ProhibitMutatingListFunctions. It implements the policy recommendation from page 114 of PBP, which suggests that if you really need to do what you're doing, make a lexical variable.
my @files = map { my $file = $_; chomp $file; $file =~ s{ \A \s+ | \s+ \z }{}xmsg; $file; } <$FILES>;
It goes on to say that if you really do want a side-effect of your loop, use for instead.
Perhaps merlyn's use of local (as in modifying $_ in map (was Re: A perverse use of grep)) should be allowed by the policy. I don't think so, but I could see that being an option. In any case, rt://Perl::Critic might be a good place to make that case.
|
|---|