Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re: Expression form of map or grep

by haukex (Bishop)
on Jul 10, 2020 at 20:00 UTC ( #11119159=note: print w/replies, xml ) Need Help??

in reply to Expression form of map or grep

Most of the default Perl::Critic policies come from TheDamian's Perl Best Practices. The rationale for the policies can be found in perlcritic's verbose output, the POD (in this case, Perl::Critic::Policy::BuiltinFunctions::RequireBlockMap), and of course the book (page 169).

$ perlcritic Expression form of "map" at line 8, column 12. See page 169 of PBP. +(Severity: 4) $ perlcritic --verbose 11 Expression form of "map" at line 8, near 'my @list = map "$_ beads", @ +colors, @grey_scale;'. BuiltinFunctions::RequireBlockMap (Severity: 4) The expression forms of `grep' and `map' are awkward and hard to r +ead. Use the block forms instead. @matches = grep /pattern/, @list; #not ok @matches = grep { /pattern/ } @list; #ok @mapped = map transform($_), @list; #not ok @mapped = map { transform($_) } @list; #ok

Although Perl::Critic policies usually have a very good reason, some of them can be seen as stylistic choices and one can disagree with PBP if one knows what one is doing. The severify of policies can be changed via the config file, e.g.:

$ cat ~/.perlcriticrc severity = 3 [BuiltinFunctions::RequireBlockMap] severity = 2

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11119159]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (6)
As of 2021-06-16 19:38 GMT
Find Nodes?
    Voting Booth?
    What does the "s" stand for in "perls"? (Whence perls)

    Results (79 votes). Check out past polls.