=head1 Name B - Sort perlcritic 'brutal' output by severity =head1 Description Input is a Perl script or module. Prints to STDOUT. Example: pcsort foo.pl Also runs perl -MO=Lint. See also ~/.perlcriticrc file =cut use warnings FATAL => 'all'; use strict; use Data::Dumper; $Data::Dumper::Sortkeys = 1; my $file = shift; my %hoa; my %pols; # These command line settings override same settings # in ~/.perlcriticrc file my @lines = qx(perlcritic --brutal --verbose 9 $file); for (@lines) { if (/ \[ ([\w:]+) \] .*? Severity : \s+ (\d) /x) { chomp; my $pol = $1; my $sev = $2; push @{ $hoa{$sev} }, $_; $pols{"perldoc Perl::Critic::Policy::$pol"}++; } } print Dumper(\%hoa); print 'TOTAL = ', scalar @lines, "\n"; print "$_\n" for sort keys %pols; my $lint = "perl -MO=Lint $file"; print "\n$lint\n"; print qx($lint 2>&1); # Make sure it all goes to STDOUT