my $parser = HTML::Parser->new(
start_h => [ \&_starttag, 'self, tagname, text, attr' ],
end_h => [ \&_endtag, 'self, tagname' ],
text_h => [ \&_text, 'self, text, dtext' ]
);
$parser->parse($response->content());
sub _starttag {
my ($self, $tag, $attr) = @_;
$self->{'_body'} = 1 if($tag eq 'body');
$self->{'_body'} = 0 if($tag eq 'script');
$self->{'_body'} = 0 if($tag eq 'a');
$self->{'_body'} = 0 if($tag eq 'label');
$self->{'_body'} = 0 if($tag eq 'option');
$self->{'_body'} = 0 if($tag eq 'form');
}
sub _endtag {
my ($self, $tag) = @_;
$self->{'_body' } = 0 if($tag eq 'body' );
$self->{'_body' } = 1 if($tag eq 'a' );
$self->{'_body'} = 1 if($tag eq 'script');
$self->{'_body'} = 1 if($tag eq 'label');
$self->{'_body'} = 1 if($tag eq 'option');
$self->{'_body'} = 1 if($tag eq 'form');
}
sub _text {
my ($self, $dtext) = @_;
$dtext =~ s/\A\s+//;
$dtext =~ s/\s+\z//;
return() unless ( length($dtext) > 0 and $dtext =~ /[^\s]/ );
if ($self->{'_body'} == 1) {
$content=$content.$dtext." ";
}
}