#!/usr/bin/perl -w
# Shows how to mangle all plain text in an HTML document, using an arbitrary
# Perl expression. Plain text is all text not within a tag declaration, i.e.
# not in <p ...>, but possibly between <p> and </p>
use
strict;
my
$code
=
shift
|| usage();
$code
=
'sub edit_print { local $_ = shift; '
.
$code
.
'; print }'
;
#print $code;
eval
$code
;
die
$@
if
$@;
use
HTML::Parser 3.05;
my
$p
= HTML::Parser->new(
unbroken_text
=> 1,
default_h
=> [
sub
{
@_
; },
"text"
],
text_h
=> [ \
&edit_print
,
"text"
],
);
my
$file
=
shift
|| usage();
$p
->parse_file(
$file
) ||
die
"Can't open file $file: $!\n"
;
sub
usage
{
my
$progname
= $0;
$progname
=~ s,^.*/,,;
die
"Usage: $progname <perlexpr> <filename>\n"
;
}