#!/usr/bin/perl use strict; use warnings; my $mandir = "/usr/share/man"; my %headers; my $count = 0; sub peek { my $file = shift; open my $fh => "gunzip -c $file |" or die "open $file: $!"; while (<$fh>) { next unless /^\.SH\s*(.*)/; my $header = $1; $header =~ s/\s+$//; $header =~ s/^"(.*)"\s*$/$1/; $headers {$header} ++; } close $fh; $count ++; } foreach my $file (<$mandir/*/*.?.gz>) { next if -l $file; peek $file; } my $i = 0; print " # % Header\n"; foreach my $header (sort {$headers {$b} <=> $headers {$a}} keys %headers) { last if 1 > (my $perc = 100 * $headers {$header} / $count); printf "%2d: %6.2f %s\n" => ++ $i, $perc, $header; } print "Total files: $count.\n"; __END__