Am Dienstag, 25. April 2006 22:09 schrieben Sie:
> This is not supposed to be for parse_file().  It would be helpful if
> you try to produce a small test program that demonstrates this.

Yes, of course. I hope I didn't forget any important line of code;

Best regards,

Oliver Block


######## output ###########
start_document 23:43:45.188784
########################

with $p->eof();
######## output ###########
start_document 23:51:25.93499
end_document 23:51:25.96407
########################
#######  calling script ########
..
my $p = MyParser->new;
$p->parse("localfile.html"); # local html file
#$p->eof();
..
########################
####### MyParser.pm ########
package MyParser;

use strict;
use HTML::Parser;
use Time::HiRes qw( gettimeofday );

my $class;
my $p;
..
sub new {
  $class = shift;
  my $self = { };
  bless $self, $class;
  $self->_init();
  return $self;
}
sub _init() {
$p = HTML::Parser->new( api_version => 3,
          start_h => [ \&_start_handler, 'tagname, attr' ],
          end_h => [ \&_end_handler, 'tagname' ],
          text_h => [ \&_text_handler, 'self' ],
          start_document_h => [ \&_start_document_handler, 'self' ],
          end_document_h => [\&_end_document_handler, 'self' ]);
}
sub parse() {
  my ($class, $s, $uri) @_; # local $class
  ...
  $p->parse($s);
}
sub _start_document_handler {
    printTimestamp $class, "start_document";
} 
sub _end_document_handler {
   printTimestamp $class, "end_document";
}
sub eof() {
   return $p->eof();
}
sub printTimestamp {
   my ($class, $caller, $comment) = @_;
   my($sec, $min, $hour) = localtime(time);
  my ($hsec, $msec) = gettimeofday; # $hsec not used
 printf("%s %s %2d:%2d:%2d.%d\n", $caller, $comment, $hour, $min, $sec, 
$msec):
}
1;
__END__


Reply via email to