#!/usr/bin/perl -CA
-use 5.018;
+use 5.014;
use warnings;
use utf8;
use List::Util qw( min max sum );
use open qw( :std :utf8 );
-use experimental qw( lexical_subs );
our $VERSION = '1.06';
$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{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);
} or warn $@, "Expect slowdown with large datasets!\n";
}
-my $valmatch = qr/$opt{anchor} ( \h* -? [0-9]* \.? [0-9]+ (?: e[+-]?[0-9]+ )? |)/x;
+my $valmatch = qr<
+ $opt{anchor} ( \h* -? [0-9]* \.? [0-9]+ (?: e[+-]?[0-9]+ )? |)
+>x;
while (defined ($_ = $opt{input} ? shift @{ $opt{input} } : readline)) {
s/\r?\n\z//;
s/^\h*// unless $opt{unmodified};
@lines > $nr or return unless $opt{hidemin};
@order = sort { $b <=> $a } @order unless tied @order;
-my $maxval = $opt{maxval} // ($opt{hidemax} ? max grep { length } @values[0 .. $opt{hidemax} - 1] : $order[0]) // 0;
+my $maxval = $opt{maxval} // (
+ $opt{hidemax} ? max grep { length } @values[0 .. $opt{hidemax} - 1] :
+ $order[0]
+) // 0;
my $minval = $opt{minval} // min $order[-1] // (), 0;
my $lenval = $opt{'value-length'} // max map { length } @order;
my $len = defined $opt{trim} && $opt{trim} <= 0 ? -$opt{trim} + 1 :
}
my $line = $lines[$nr] =~ s/\n/$val/r;
printf '%-*s', $len + length($val), $line;
- print $barmark[$_] // $opt{'graph-format'} for 1 .. $size && (($values[$nr] || 0) - $minval) * $size + .5;
+ print $barmark[$_] // $opt{'graph-format'}
+ for 1 .. $size && (($values[$nr] || 0) - $minval) * $size + .5;
say '';
}
continue {
Commonly used after counting, for example users on the current server:
- users | sed 's/ /\n/g' | sort | uniq -c | barcat
+ users | tr ' ' '\n' | sort | uniq -c | barcat
Letter frequencies in text files:
-Gd 'node=SEARCHRESULTS&q=EXR.D.USD.EUR.SP00.A&exportType=csv' |
grep '^[12]' | barcat -f',\K' --value-length=7
-Total population history from the World Bank dataset (XML):
-External datasets, like total population in XML from the World Bank:
+Total population history in XML from the World Bank:
curl http://api.worldbank.org/v2/country/1W/indicator/SP.POP.TOTL |
xmllint --xpath '//*[local-name()="date" or local-name()="value"]' - |