use HTML::TokeParser; my @forbid = $self->test_tags( 'tag_forbid', $content, $case_re ); push @ret, ['Forbidden tag and attribute', @results] if @forbid; my @require = $self->test_tags( 'tag_require', $content, $case_re ); push @ret, ['Required tag and attribute', @results] if @require; sub test_tags { my ($self, $tag_type, $content, $case_re) = @_; my $page = HTML::TokeParser->new(\$content); my @results; for my $tag_struct (@{$self->test_param( $tag_type, [] )}) { my ($ok, $result) = search_tag( $page, $case_re, %{ $tag_struct }); push @results, $self->test_result($ok, $result); } return @results; }