my $p = HTML::TokeParser->new($html) || die "Can't tokenize: $!"; # get each alone. while (my $token = $p->get_tag('tag1')) { # store the original text $origtext = $token->[3]; # get data between my $myTag = $p->get_tag('MYTAG'); my $text = $p->get_text('/MYTAG'); if ($text ne '') { # tag is not empty.. so $origtext retains # the data we want.. # ... do whatever with $origtext and move on } }