#!/usr/bin/perl
# This script will assume that the first command line argument
# is a file containing HTML, and return a version
# where all the tags are converted to lowercase.
use
strict;
use
warnings;
use
HTML::Parser ();
HTML::Parser->new(
start_h
=> [\
&start_lc
,
"tokenpos, text"
],
end_h
=> [
sub
{
lc
shift
},
"text"
],
default_h
=> [
sub
{
shift
},
"text"
],
)->parse_file(
shift
)
||
die
"Can't open file: $!\n"
;
sub
start_lc {
my
(
$tpos
,
$text
) =
@_
;
for
(
my
$i
= 0;
$i
<
@$tpos
;
$i
+= 2) {
next
if
$i
&& (
$i
/ 2) % 2 == 0;
# skip attribute values
$_
=
lc
$_
for
substr
(
$text
,
$tpos
->[
$i
],
$tpos
->[
$i
+ 1]);
}
$text
;
}