round partial sum to avoid floating point errors
[barcat.git] / barcat
diff --git a/barcat b/barcat
index d4a8274f6c9af8015332215138b8d46c3158a30d..0ab19d9c1159eb7349cf005cd52f0d6ebfc38e22 100755 (executable)
--- a/barcat
+++ b/barcat
@@ -81,7 +81,10 @@ GetOptions(\%opt,
                local $/ = undef;  # slurp
                my $pod = readline *DATA;
                $pod =~ s/^=over\K/ 25/;  # indent options list
-               $pod =~ s/^=item\ \N*\n\n\N*\n\K (?:(?:^=over.*?^=back\n)?(?!=)\N*\n)*/\n/g;
+               $pod =~ s{
+                       ^=item \h \N*\n\n \N*\n \K  # first line
+                       (?: (?: ^=over .*? ^=back\n )? (?!=) \N*\n )*
+               }{\n}g;  # abbreviate options
                $pod =~ s/[.,](?=\n)//g;  # trailing punctuation
                $pod =~ s/^=item\ \K(?=--)/____/g;  # align long options
                # abbreviate <variable> indicators
@@ -305,7 +308,7 @@ say $opt{palette} ? color(0) : '' if $opt{spark};
 
 sub show_stat {
        if ($opt{hidemin} or $opt{hidemax}) {
-               printf '%s of ', sum(grep { length }
+               printf '%.8g of ', sum(grep { length }
                        @values[$opt{hidemin} .. ($opt{hidemax} || @lines) - 1]
                ) // 0;
        }