diff options
Diffstat (limited to 'eg/htextsub')
-rwxr-xr-x | eg/htextsub | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/eg/htextsub b/eg/htextsub new file mode 100755 index 0000000..5091273 --- /dev/null +++ b/eg/htextsub @@ -0,0 +1,28 @@ +#!/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 { print @_; }, "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"; +} |