You still don't need to use a module to do this. All you need is a package which can live quite happily in a script. Here is a HTML::Parser example - Filter inherits from Parser, including its new method as you can see. This works fine within a package structure so you don't need a separate module. It's a rather basic tag filter that only passes specified tags and their content if you were wondering.
package Filter;
use strict;
use base 'HTML::Parser';
my ($filter, $want_it);
my @ok_tags = qw ( h1 h2 h3 h4 p br );
my %ok_tags;
$ok_tags{$_}++ for @ok_tags;
sub start {
my ($self, $tag, $attr, $attrseq, $origtext) = @_;
if ( exists $ok_tags{$tag}) {
$filter .= $origtext;
$want_it = 1;
} else {
$want_it = 0;
}
}
sub text {
my ($self, $text) = @_;
$filter .= $text if $want_it;
}
sub comment {
# uncomment to no strip comments
# my ($self, $comment) = @_;
# $filter .= "<!-- $comment -->";
}
sub end {
my ($self, $tag, $origtext) = @_;
$filter .= $origtext if exists $ok_tags{$tag};
}
my $parser = new Filter;
my $html = join '', <DATA>;
$parser->parse($html);
$parser->eof;
print $html;
print "\n\n------------------------\n\n";
print $filter;
__DATA__
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>Hello Parser</h1>
<p>You need HTML::Parser</p>
<h2>Parser rocks!</h2>
<a href="html.parser.com">html.parser.com</a>
<hr>
<pre>
use HTML::Parser;
</pre>
<!-- HTML PARSER ROCKS! -->
</body>
</html>
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
|