From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

#!/usr/bin/perl
# Time-stamp: "2000-10-02 14:48:15 MDT"
#
# Parse the given HTML file(s) and dump the parse tree
# Usage:
# htmltree -D3 -w file1 file2 file3
# -D[number] sets HTML::TreeBuilder::Debug to that figure.
# -w turns on $tree->warn(1) for the new tree
require 5;
use strict;
my $warn;
BEGIN { # We have to set debug level before we use HTML::TreeBuilder.
$HTML::TreeBuilder::DEBUG = 0; # default debug level
$warn = 0;
while(@ARGV) { # lameo switch parsing
if($ARGV[0] =~ m<^-D(\d+)$>s) {
$HTML::TreeBuilder::DEBUG = $1;
print "Debug level $HTML::TreeBuilder::DEBUG\n";
shift @ARGV;
} elsif ($ARGV[0] =~ m<^-w$>s) {
$warn = 1;
shift @ARGV;
} else {
last;
}
}
}
foreach my $file (grep( -f $_, @ARGV)) {
print
"=" x 78, "\n",
"Parsing $file...\n";
my $h = HTML::TreeBuilder->new;
$h->ignore_unknown(0);
$h->warn($warn);
$h->parse_file($file);
print "- "x 39, "\n";
$h->dump();
$h = $h->delete(); # nuke it!
print "\n\n";
}
exit;
__END__