use HTML::TokeParser::Simple;
my $p = HTML::TokeParser::Simple->new( file => 'test_data.html' );
my $t; #token;
my @text;
#get all text between pre tags
while ($t = $p->get_token) {
next unless $t->is_start_tag('pre');
my $content;
while ($t = $p->get_token) {
last if $t->is_end_tag('pre');
$content .= $t->as_is;
}
push @text, $content;
}