HTML::Filter(3) User Contributed Perl Documentation HTML::Filter(3)

# [NAME](#NAME)

HTML::Filter - Filter HTML text through the parser

# [NOTE](#NOTE)

**This module is deprecated.** The "HTML::Parser" now provides the functionally of "HTML::Filter" much more efficiently with the "default" handler.

# [SYNOPSIS](#SYNOPSIS)

```
 require HTML::Filter;
 $p = HTML::Filter->new->parse_file("index.html");
```

# [DESCRIPTION](#DESCRIPTION)

"HTML::Filter" is an HTML parser that by default prints the original text of each HTML element (a slow version of [**cat**(1)](/man/os/perl-html-parser/cat.1) basically). The callback methods may be overridden to modify the filtering for some HTML elements and you can override **output()** method which is called to print the HTML text.

"HTML::Filter" is a subclass of "HTML::Parser". This means that the document should be given to the parser by calling the $p-&gt;**parse()** or $p-&gt;**parse\_file()** methods.

# [EXAMPLES](#EXAMPLES)

The first example is a filter that will remove all comments from an HTML file. This is achieved by simply overriding the comment method to do nothing.

```
  package CommentStripper;
  require HTML::Filter;
  @ISA=qw(HTML::Filter);
  sub comment { }  # ignore comments
```

The second example shows a filter that will remove any &lt;TABLE&gt;s found in the HTML file. We specialize the **start()** and **end()** methods to count table tags and then make output not happen when inside a table.

```
  package TableStripper;
  require HTML::Filter;
  @ISA=qw(HTML::Filter);
  sub start
  {
     my $self = shift;
     $self->{table_seen}++ if $_[0] eq "table";
     $self->SUPER::start(@_);
  }
  sub end
  {
     my $self = shift;
     $self->SUPER::end(@_);
     $self->{table_seen}-- if $_[0] eq "table";
  }
  sub output
  {
      my $self = shift;
      unless ($self->{table_seen}) {
          $self->SUPER::output(@_);
      }
  }
```

If you want to collect the parsed text internally you might want to do something like this:

```
  package FilterIntoString;
  require HTML::Filter;
  @ISA=qw(HTML::Filter);
  sub output { push(@{$_[0]->{fhtml}}, $_[1]) }
  sub filtered_html { join("", @{$_[0]->{fhtml}}) }
```

# [SEE ALSO](#SEE_ALSO)

HTML::Parser

# [COPYRIGHT](#COPYRIGHT)

Copyright 1997-1999 Gisle Aas.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

2026-09-20 perl v5.44.0

---

Document: HTML::Filter(3pm) from perl-html-parser 3.86-r0 (Chainguard OS)
Source: https://github.com/libwww-perl/HTML-Parser.git
