#!/usr/local/bin/perl

my $parser = Headers->new or die;
my $file = shift or die "Usage: $0 filename\n";
$parser->parse_file($file);
my $all_headers = $parser->{HEADERS};
for (1..6) {
  my $headers = $all_headers->[$_];
  print "Headers of size $_:\n";
  for my $t (@$headers) {
    print "\t", $t, "\n";
  }
}
exit;

package Headers;
use base HTML::Parser;
# use Carp;

sub start {
  my ($parser, $tag, $attr) = @_;
  return unless $tag =~ /^h([1-6])$/;
  $parser->{TAGTYPE} = $1;
}

sub text {
  my ($parser, $text) = @_;
  my $n = $parser->{TAGTYPE};
  return unless $n; 
  push @{$parser->{HEADERS}[$n]}, $text;
}

sub end {
  my ($parser, $tag) = @_;
  return unless $tag =~ /^h([1-6])$/;
  my $tt = $parser->{TAGTYPE};
  if (! defined $tt || $tag ne "h$tt") {
    warn "<h$tt> tag was closed by $tag instead.\n";
  }
  delete $parser->{TAGTYPE};
}

