my $p = HTML::Parser->new(api_version => 3, start_h => [\&div_start_handler, "self,tagname,attr"]);
$p->parse_file($file);
do_stuff();
sub div_start_handler
{
my($self, $tag, $attr) = @_;
my($blogdate);
return unless ($tag eq "div");
return unless exists $attr->{class};
return unless $attr->{class} eq 'post';
#global, so the endhandler knows what the last ID was
$blogid = $attr->{id};
$BlogArticles{$blogid}{DateText} = $attr->{unusedattribute};
$self->handler(text => [], "dtext" );
$self->handler(end => \&div_end_handler, "self,tagname");
}
sub div_end_handler
{
my($self, $tag) = @_;
return unless $tag eq "div";
my $text = join("", map $_->[0], @{$self->handler("text")});
$BlogArticles{$blogid}{BodyText} = $text;
$self->handler("text", undef);
$self->handler("start", \&div_start_handler);
$self->handler("end", undef);
}