Previous Table of Contents Next


Just finding patterns in strings and lines of input isn't enough; sometimes you need to modify the data as well. One waybut certainly not the only wayis to use the substitution operator s///. The syntax is as follows:


The substitution operator searches $_ by default for searchpattern and replaces the entire matched regular expression with replacement. The operator returns the number of matches or substitutions performed, or 0 if no matches were made. The following is an example:

$_="Our house is in the middle of our street".

s/middle/end/;         # Is now: Our house is in the end of our street

s/in/at/;               # Is now: Our house is at the end of our street.

if (s/apartment/condo/) {

    #  This code isn't reached, see explanation.


Here, the substitutions happen as you would expect. The word middle is changed to end, and in is changed to at. The if statement, however, fails, because the word apartment does not appear in $_ and therefore can't be substituted.

The substitution operator can also use delimiters other than slashes (/), just as the match operator can. Simply put whatever delimiter you want immediately after the s, as shown here:


    Previous Table of Contents Next
    © 2000- NIV