I'm trying to use HTML::Parser 3.06 to subclass an object but keep receiving
a very frustrating error. It seems I cannot call a subclassed method
against HTML::Parser without it complaining:
%./remreq <some.html>
Can't locate auto/HTML/Parser/_findreq.al in @INC (@INC contains: .
/usr/local/lib/perl5/sun4-solaris/5.00404 /usr/local/lib/perl5
/usr/local/lib/perl5/site_perl/sun4-solaris /usr/local/lib/perl5/site_perl
.) at /usr/local/lib/perl5/site_perl/HTML/Parser.pm line 104
I'd really appreciate any help you might have,
Kory Lasker
Here's the object:
package Sysweb::Templater::Required;
use HTML::Parser 3.00 ();
use Data::Dumper;
use strict;
use vars qw(@ISA);
@ISA = qw(HTML::Parser);
sub new {
my $class = shift;
my $file = shift;
my %opts = shift;
my $self = $class->SUPER::new(api_version => 3);
$self->{required} = [];
$self->{u_filename} = $file;
$self->{req_tagname} = $opts{RequiredTag} || 'req';
$self->handler( start => "_findreq", 'tagname, attr' );
return bless $self, $class;
}
sub _findreq {
my ($self, $tagname, $attr) = @_;
if (exists $attr->{$self->{req_tagname}}) {
push(@{$self->{required}}, $attr->{name});
}
}
sub parseit {
my ($self) = shift;
return $self->parse_file($self->{u_filename});
}
sub list_required {
my ($self) = shift;
return @{$self->{required}};
}
1;
...And here's how the object is called:
#!/usr/local/bin/perl
use lib qw(.);
use Sysweb::Templater::Required;
my $req_parser = new Sysweb::Templater::Required($ARGV[0]);
$req_parser->parseit;
@required = $req_parser->list_required;
print join(",", @required);