summaryrefslogtreecommitdiff
path: root/eg/htextsub
diff options
context:
space:
mode:
Diffstat (limited to 'eg/htextsub')
-rwxr-xr-xeg/htextsub28
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";
+}