use HTML::TreeBuilder;
my $filename = ...;
my $tree = HTML::TreeBuilder->new;
{
open my $fileh, "<", $filename or die qq(error opening input html file "$filename": $!);
binmode $fileh;
my $filesize = -s $fileh;
while (read $fileh, my $buf, (1<<16)) {
$tree->parse($buf);
printf(STDERR "Parsing html, %2d%%;\r", int(100*tell($fileh)/($filesize+1)));
}
$tree->eof;
print STDERR "Parsing html complete. \n";
}
####
use HTML::TreeBuilder;
my $filename = ...;
my $tree = HTML::TreeBuilder->new;
{
printf STDERR "Reading html file.\n";
open my $fileh, "<", $filename or die qq(error opening input html file "$filename": $!);
binmode $fileh;
local $/;
my $filec = <$fileh>;
eof($fileh) or die qq(error reading input html file);
printf STDERR "Substing html file.\n";
$filec =~ ...;
my $filesize = length $filec;
printf STDERR "Substed html has length %d\n", $filesize;
my $filetell = 0;
while (my$buf = substr $filec, 0, (1<<16), "") {
$filetell += length $filec;
$tree->parse($buf);
printf STDERR "Parsing html: %2d%%;\r", int(100*$filetell/($filesize+1));
}
$tree->eof;
print STDERR "Parsing html complete. \n";
}
####
$filetell += length $filec;
####
$filetell += length $buf;