Chapter 9. Processing Text with Regular Expressions
You can use regular expressions to change text too. So far we’ve only shown you how to match a pattern, and now we’ll show you how to use patterns to locate the parts of strings that you want to change.
Substitutions with s///
If you think of the m//
pattern match as being like your word processor’s “search” feature, the
“search and replace” feature would be Perl’s s/// substitution operator. This simply
replaces whatever part of a variable[238] matches the pattern with a replacement string:
$_="He's out bowling with Barney tonight.";s/Barney/Fred/;# Replace Barney with Fred"$_\n";
If the match fails, nothing happens, and the variable is untouched:
# Continuing from above; $_ has "He's out bowling with Fred tonight."s/Wilma/Betty/;# Replace Wilma with Betty (fails)
Of course, both the pattern and the replacement string could be
more complex. Here, the replacement string uses the first capture
variable, $1, which is set by the
pattern match:
s/with (\w+)/against $1's team/;"$_\n";# says "He's out bowling against Fred's team tonight."
Here are some other possible substitutions. These are here only as samples; in the real world, it would not be typical to do so many unrelated substitutions in a row:
$_="green scaly dinosaur";s/(\w+) (\w+)/$2, $1/;# Now it's "scaly, green dinosaur"s/^/huge, /;# Now it's "huge, scaly, green dinosaur"s/,.*een//;# Empty replacement: Now it's "huge dinosaur"s/green/red/;# Failed match: ...