'usage|h' => sub {
local $/;
my $pod = readline *DATA;
- $pod =~ s/^=over\K/ 22/m; # indent options list
+ $pod =~ s/^=over\K/ 25/m; # indent options list
$pod =~ s/^=item \N*\n\n\N*\n\K(?:(?:^=over.*?^=back\n)?(?!=)\N*\n)*/\n/msg;
+ $pod =~ s/[.,](?=\n)//g; # trailing punctuation
+ # abbreviate <variable> indicators
+ $pod =~ s/\Q>.../s>/g;
+ $pod =~ s/<(?:number|count|seconds)>/N/g;
+ $pod =~ s/<character(s?)>/\Uchar$1/g;
+ $pod =~ s/\Q | /|/g;
+ $pod =~ s/(?<!\w)<([a-z]+)>/\U$1/g; # uppercase
require Pod::Usage;
- my $parser = Pod::Usage->new;
+ my $parser = Pod::Usage->new(USAGE_OPTIONS => {
+ -indent => 2, -width => 78,
+ });
$parser->select('SYNOPSIS', 'OPTIONS');
$parser->output_string(\my $contents);
$parser->parse_string_document($pod);