Program: htmlsub

This program makes substitutions in HTML files so that the changes only happen in normal text. If you had the file scooby.html that contained:

<HTML><HEAD><TITLE>Hi!</TITLE></HEAD><BODY>
<H1>Welcome to Scooby World!</H1>
I have <A HREF="pictures.html">pictures</A> of the crazy dog
himself.  Here's one!<P>
<IMG SRC="scooby.jpg" ALT="Good doggy!"><P>
<BLINK>He's my hero!</BLINK>  I would like to meet him some day,
and get my picture taken with him.<P>
P.S. I am deathly ill.  <A HREF="shergold.html">Please send
cards</A>.
</BODY></HTML>

You can use htmlsub change every occurrence of the word ``picture'' in the document text to read ``photo”. It prints the new document on STDOUT:

% htmlsub picture photo scooby.html

               <HTML><HEAD><TITLE>Hi!</TITLE></HEAD><BODY>
            
               <H1>Welcome to Scooby World!</H1>
            
               I have <A HREF="pictures.html" >photos</A> of the crazy dog
            
               himself.  Here's one!<P>
            
               <IMG SRC="scooby.jpg" ALT="Good doggy!"><P>
            
               <BLINK>He's my hero!</BLINK>  I would like to meet him some day,
            
               and get my photo taken with him.<P>
            
               P.S. I am deathly ill.  <A HREF="shergold.html" >Please send
            
               cards</A>.
            
               </BODY></HTML>

The program is shown in Example 20.11.

Example 20-11. htmlsub

#!/usr/bin/perl -w # htmlsub - make substitutions in normal text of HTML files # from Gisle Aas <gisle@aas.no> sub usage { die "Usage: $0 <from> <to> <file>...\n" } my $from = shift or usage; my $to = shift or usage; usage unless @ARGV; # Build the HTML::Filter subclass to do the substituting. package MyFilter; ...

Get Perl Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.