if (!defined ($tag_search) && !defined ($attr_search)) { $ok = 0; return($ok, "No values for tag searched"); } #### return (0, "No values for tag searched") unless defined $tag_search and defined $attr_search; #### my $tag = @{$tagstruct}[0]; # versus my $tag = $tagstruct->[0]; #### 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; }