This chapter presents an example of how powerful Perl is at automating repetitive tasks. It features a pair of scripts designed to rename, and then make minor editing changes to, a collection of HTML pages. Along the way, this chapter discusses how to use the shell’s globbing feature to create a list of filenames matching a wildcard pattern, how to read and manipulate a file’s contents from within a Perl script, and how to write a modified version of a file back out to disk. It also gives you your first detailed look at Perl’s pattern matching and substitution operators, and the powerful regular expressions that are at their heart.
Science-fiction author and programmer Neal Stephenson has written a great essay called “In the Beginning Was the Command Line” (http://www.cryptonomicon.com/beginning.html). The most memorable part of the essay is Stephenson’s description of the Hole Hawg, a drill made by the Milwaukee Tool Company. The Hole Hawg is strictly for professionals; it apparently is capable of boring a hole through almost anything, and bears the same relation to the standard homeowner’s electric drill that such a tool bears to a preschooler’s plastic toy. In Stephenson’s metaphor, the Hole Hawg represents Unix, the operating system that does exactly what you tell it to, swiftly and mercilessly, regardless of whether you know what you’re doing.
Perl takes this principle even further, which is where its characterization as the “Swiss Army chainsaw” of programming comes from. In this early phase of your work with Unix and Perl, try to remember that you’re working with the Hole Hawg and the Swiss Army chainsaw. To the extent that you can cultivate some healthy paranoia, you’ll save yourself lots of trouble later on. Look carefully at the command you are about to execute before you press the Enter key. As you are building your programs, have them start small, doing simple, nondestructive things, and do your best to verify that they actually are doing what you intended them to do, before you unleash their full power.
Another piece of advice that bears repeating is: keep good backups. Using the techniques described in this chapter without having a recent backup on hand is like doing a high-wire act without a net: definitely not recommended, especially for beginners.