summaryrefslogtreecommitdiff
path: root/eg/htextsub
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2013-05-08 22:21:52 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2013-05-08 22:21:52 +0000
commit2f253cfc85ffd55a8acb988e91f0bc5ab348124c (patch)
tree4734ccd522c71dd455879162006742002f8c1565 /eg/htextsub
downloadHTML-Parser-tarball-master.tar.gz
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";
+}