X-Git-Url: http://git.shiar.net/barcat.git/blobdiff_plain/32808b396160b78f198596654ac68e9a2d653504..df0c8de6d8a58b68a94308ef203ee685d6e2fbd9:/barcat diff --git a/barcat b/barcat index 9893baf..b0237c4 100755 --- a/barcat +++ b/barcat @@ -4,7 +4,7 @@ use warnings; use utf8; use List::Util qw( min max sum ); use open qw( :std :utf8 ); -use re '/ms'; +use re '/msx'; our $VERSION = '1.07'; @@ -17,7 +17,7 @@ GetOptions(\%opt, eval { local $_ = $_[1]; $opt{anchor} = /\A[0-9]+\z/ ? qr/(?:\S*\h+){$_}\K/ : qr/$_/; - } or die $@ =~ s/(?: at \N+)?\Z/ for option $_[0]/r; + } or die $@ =~ s/(?:\ at\ \N+)?\Z/ for option $_[0]/r; }, 'human-readable|H!', 'interval|t:i', @@ -39,7 +39,7 @@ GetOptions(\%opt, my ($optname, $optval) = @_; $optval ||= 0; ($opt{hidemin}, $opt{hidemax}) = - $optval =~ m/\A (?: ([0-9]+)? - )? ([0-9]+)? \z/x or die( + $optval =~ m/\A (?: ([0-9]+)? - )? ([0-9]+)? \z/ or die( "Value \"$optval\" invalid for option limit", " (range expected)\n" ); @@ -78,10 +78,10 @@ GetOptions(\%opt, exit; }, 'usage|h' => sub { - local $/; + 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\ \N*\n\n\N*\n\K (?:(?:^=over.*?^=back\n)?(?!=)\N*\n)*/\n/g; $pod =~ s/[.,](?=\n)//g; # trailing punctuation $pod =~ s/^=item\ \K(?=--)/____/g; # align long options # abbreviate indicators @@ -124,7 +124,7 @@ $opt{'signal-stat'} //= exists $SIG{INFO} ? 'INFO' : 'QUIT'; $opt{markers} //= '=avg >31.73v <68.27v +50v |0'; $opt{palette} //= $opt{color} && [31, 90, 32]; $opt{hidemin} = ($opt{hidemin} || 1) - 1; -$opt{input} = @ARGV && $ARGV[0] =~ m/\A[-0-9]/ ? \@ARGV : undef +$opt{input} = (@ARGV && $ARGV[0] =~ m/\A[-0-9]/) ? \@ARGV : undef and undef $opt{interval}; my (@lines, @values, @order); @@ -152,11 +152,12 @@ my $valmatch = qr< while (defined ($_ = $opt{input} ? shift @{ $opt{input} } : readline)) { s/\r?\n\z//; s/\A\h*// unless $opt{unmodified}; - push @values, s/$valmatch/\n/ && $1; - push @order, $1 if length $1; - if (defined $opt{trim} and defined $1) { + my $valnum = s/$valmatch/\n/ && $1; + push @values, $valnum; + push @order, $valnum if length $valnum; + if (defined $opt{trim} and defined $valnum) { my $trimpos = abs $opt{trim}; - $trimpos -= length $1 if $opt{unmodified}; + $trimpos -= length $valnum if $opt{unmodified}; if ($trimpos <= 1) { $_ = substr $_, 0, 2; } @@ -184,7 +185,7 @@ sub color { sub sival { my $unit = int(log(abs $_[0] || 1) / log(10) - 3*($_[0] < 1) + 1e-15); my $float = $_[0] !~ /\A0*[-0-9]{1,3}\z/; - sprintf('%3.*f%1s', + return sprintf('%3.*f%1s', $float && ($unit % 3) == ($unit < 0), # tenths $_[0] / 1000 ** int($unit/3), # number $#{$opt{units}} * 1.5 < abs $unit ? "e$unit" : $opt{units}->[$unit/3] @@ -289,6 +290,7 @@ continue { } say $opt{palette} ? color(0) : '' if $opt{spark}; + return $nr; } sub show_stat { @@ -309,6 +311,7 @@ sub show_stat { ); } say ''; + return 1; } sub show_exit {