Chapter 7. Perl


Perl has been featured prominently in this book, and with good reason. It is popular, extremely rich with regular expressions, freely and readily obtainable, easily approachable by the beginner, and available for a remarkably wide variety of platforms, including pretty much all flavors of Windows, Unix, and the Mac.

Some of Perl's programming constructs superficially resemble those of C or other traditional programming languages, but the resemblance stops there. The way you wield Perl to solve a problem The Perl Way is different from traditional languages. The overall layout of a Perl program often uses traditional structured and object-oriented concepts, but data processing often relies heavily on regular expressions. In fact, I believe it is safe to say that regular expressions play a key role in virtually all Perl programs . This includes everything from huge 100,000-line systems, right down to simple one-liners, like

 % perl -pi -e 's{([-+]?\d+(\.\d+)?)F\b}{sprintf "%.0fC",(-32)+5/9}eg' *.txt 

which goes through *.txt files and replaces Fahrenheit values with Celsius ones (reminiscent of the first example from Chapter 2).



In This Chapter

This chapter looks at everything regex about Perl, [ ] including details of its regex flavor and the operators that put them to use. This chapter presents the regex-relevant details from the ground up, but I assume that you have at least a basic familiarity with Perl. (If youve read Chapter 2, you're already familiar enough to at least start using this chapter.) I'll often use, in passing, concepts that have not yet been examined in detail, and I won't dwell much on non-regex aspects of the language. It might be a good idea to keep the Perl documentation handy, or perhaps O'Reilly's Programming Perl .

[ ] This book covers features of Perl as of Version 5.8.8.

Perhaps more important than your current knowledge of Perl is your desire to understand more . This chapter is not light reading by any measure. Because it's not my aim to teach Perl from scratch, I am afforded a luxury that general books about Perl do not have: I don't have to omit important details in favor of weaving one coherent story that progresses unbroken through the whole chapter. Some of the issues are complex, and the details thick; don't be worried if you can't take it all in at once. I recommend first reading the chapter through to get the overall picture, and returning in the future to use it as a reference as needed.

To help guide your way, here's a quick rundown of how this chapter is organized:

  • "Perl's Regex Flavor" (˜286) looks at the rich set of metacharacters supported by Perl regular expressions, along with additional features afforded to raw regex literals.

  • "Regex Related Perlisms" (˜293) looks at some aspects of Perl that are of particular interest when using regular expressions. Dynamic scoping and expression context are covered in detail, with a strong bent toward explaining their relationship with regular expressions.

  • Regular expressions are not useful without a way to apply them, so the following sections provide all the details to Perl's sometimes magical regex controls:

    "The qr /‹/ Operator and Regex Objects" (˜303)
    "The Match Operator" (˜306)
    "The Substitution Operator" (˜318)
    "The Split Operator" (˜321)
  • "Fun with Perl Enhancements" (˜326) goes over a few Perl-only enhancements to Perl's regular-expression repertoire , including the ability to execute arbitrary Perl code during the application of a regular expression.

  • "Perl Efficiency Issues" (˜347) delves into an area close to every Perl programmer's heart. Perl uses a Traditional NFA match engine, so you can feel free to start using all the techniques from Chapter 6 right away. There are, of course, Perl-specific issues that can greatly affect in what way, and how quickly, Perl applies your regexes. We'll look at them here.



Perl in Earlier Chapters

Perl is touched on throughout most of this book:

  • Chapter 2 contains an introduction to Perl, with many regex examples.

  • Chapter 3 contains a section on Perl history (˜88), and touches on numerous regex-related issues that apply to Perl, such as character-encoding issues (including Unicode ˜105), match modes (˜110), and a long overview of metacharacters (˜113).

  • Chapter 4 is a key chapter that demystifies the Traditional NFA match engine found in Perl. Chapter 4 is extremely important to Perl users.

  • Chapter 5 contains many examples, discussed in the light of Chapter 4. Many of the examples are in Perl, but even those not presented in Perl apply to Perl.

  • Chapter 6 is an important chapter to the user of Perl interested in efficiency.

In the interest of clarity for those not familiar with Perl, I often simplified Perl examples in these earlier chapters, writing in as much of a self-documenting pseudo-code style as possible. In this chapter, I'll try to present examples in a more Perlish style of Perl.



Mastering Regular Expressions
Mastering Regular Expressions
ISBN: 0596528124
EAN: 2147483647
Year: 2004
Pages: 113

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net