use warnings;
use strict;
use HTML::TreeBuilder;
my $html = <<'HTML';
text1.0
text1.1
text1.2
text2.0
text2.1
text2.2
text3.0
text3.1
text3.2 text3.3
text2.3
text1.3
text4.0
text4.1
text4.2 text4.3
text1.4
HTML
my $tree = HTML::TreeBuilder->new_from_content ($html);
for my $elt ($tree->look_down ('_tag', 'a')) {
print "A " . $elt->attr ('href') . "\n\tTEXT: '";
my @text_segs;
for my $child ($elt->content_list ()) {
next if ref $child and $child->{_tag} ne 'a';
last if ref $child;
push @text_segs, $child;
}
print "$_ " for @text_segs;
print "\n";
}