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);

Reply via email to