use HTML::TokeParser; my $p = HTML::TokeParser->new("index.html") || die "Can't open: $!"; while (my $token = $p->get_token) { if ($token->[0] eq 'td') { my $txt = $p->get_trimmed_text; if ($txt eq "the text before what you're looking for") { $token = $p->get_token("td"); my $txt = $p->get_trimmed_text; # $txt will be the text you're looking for } } }