changelog count

#! /usr/bin/env perl
use strict;
use warnings;
my %count;

my $print_line_num = 0;
use Getopt::Long;
GetOptions('line-num' => \$print_line_num);

my @lines = <>;
my $count = $print_line_num ?
  sub { $_[1] - $_[0] } :
  sub { scalar grep /^\t\* /, @lines[$_[0] .. $_[1]] };
$. = 0;
my $last_line = 1;
my $date;
my $writer;
foreach (@lines) {
  ++$.;
  chomp;
  if ( m/^(\d{4}-\d{2}-\d{2})\s+(.*)/ ) {
    my $n = $count->($last_line, $.);
    print "$date\t$writer\t$n\t", q{#}x($n) ,"\n" if $n > 0;
    ($date, $writer, $last_line) = ($1, $2, $.);
    $date =~ tr/-/\t/;
    $writer = sprintf '%.18s', $writer;
  }
}