$text =~ s{regexp}{helyett}egimosxahol a egimosx karakterek bármelyike opcióként használható és az operátor működését befolyásolja a következőképpen:
A határoló karakterek lehetnek bármilyen nem alfanumerikus, nem szóköz jellegű
karakterek. Ha ' karaktert használunk, akkor a Perl
nem interpolált füzérként értelmezi a rguláris kifejezést illetve a
helyettesítő füzért. (Kivéve ha az e opciót használjuk.) Határoló karakterként
valamilyen zárójelet használva annak párját kell használni a reguláris kifejezés, vagy a
helyettesítő füzér lezárására. Nem feltétlenül kell ugyanazt a karakterpárt használni a
reguláris kifejezéshez és a helyettesítő füzérhez, de mind a kettőt külön be kell zárni, azaz
s/alma/körte/
három határoló karaktert használ, de
s(alma){korte}
négy határoló karaktert használ.
Ha a reguláris kifejezés üres füzér, akkor a legutoljára használt reguláris kifejezést használja a Perl.
Az operátor visszatérési értéke a sikeresen elvégzett cserék száma, illetve ha nem sikerült egyetlen cserét sem elvégeznie akkor false, '' üres füzér, illetve a !~ használata esetén ennek ellentéte. Precízebben ($x !~ ...) ugyanaz, mint (! $x =~ ...).
A opciók értelmezése hasonló, mint az m operátornál.
Az e opció esetén a program a helyettesítő füzért, mint kifejezést értékeli ki, és ennek eredményét használja a helyettesítéshez. Ez egy teljes Perl kiértékeléást jelent, úgy, mint az eval függvény használatánál, de a szintaktikus elemzés és ellenőrzés fordítási időben történik.
A g opciónál a cseréket addig folytatja, amíg végig nem ér a füzéren, azaz
$t = "abbab" ;
$t =~ s/ab/aa/g;
print $t;
aminek a kimenete
aabaa
Ebből az is látszik, hogy a továbbkeresést onnan folytatja ahol az előző csere végetért, azaz a
helyettesítésként berakott füzért már nem bántja.
Ha nem használjuk a g opciót, akkor az operátor emlékszik arra, hogy hol fejezte be az előző
cserét, és onnan folytatja. Ezzel lehetővé válik, hogy egy ciklussal ugyanazt a hatást érjük el,
mint a g opcióval, de közben minden egyes csere után még a ciklus törzse is végrehajtódik:
$t = 'bababababababab' ;
$s = 'bab';
$r = 'bib';
while( $t =~ s/$s(.)/$r$1/ ){
print $1;
}
print "\n$t\n";
aminek a kimenete
aaaaaa
bibibibibibibab
Ha pedig a pos függvényt is bevetjük, akkor elérhetjük, hogy azokat a helyettesítő
füzéreket is figyelembe veszi az operátor, amelyeket az előző csere alkalmával helyezett el a
füzérben:
$t = 'bababababababab' ;
$T = $t;
$s = 'bab';
$r = 'bib';
$T =~ s/$s/$r/g;
while( $t =~ s/$s/$r/ ){
pos($t) -= length($r);
}
print "$T\n$t\n";
aminek a kimenete
bibabibabibabib
bibibibibibibib
Az i opció megadása esetén a mintaillesztés során a kis és nagybetűket egyenértékűnek tekinti a nyelv. Ez alól kivételek az ékezetes magyar betűk, amelyeket a rendszer nem tekint betünek, csak akkor, ha a megfelelő POSIX setlocale fügvénnyel be lett állítva a nyelv.
Az m opció esetén a füzért többsorosnak tekinti a rendszer, ami praktikusan annyit jelent, hogy minden sor végét meg lehet találni a $ jellel, ami a reguláris kifejezésben a sor vagy a füzér végét jelenti, és hasonlóan minden sor elejét a ^ jellel. Ennek az ellentéte a s opció, amely esetben a füzért egysorosnak tekinti a Perl, és a $ csak a füzér végét fogja megtalálni, vagy a füzér végén álló soremelést a ^ jel pedig csak a füzér elejét úgy, mintha sem az s sem pedig a m opciót nem adtuk volna meg. Az s opció igazi értelme, hogy ennek megadásakor a reguláris kifejezésekben a . pont karakter megfelel a soremelés karaktereknek is, míg enélkül az opció nélkül ezeknek a karaktereknek nem felel meg ez a metakarakter. Példát az m operátornál mutatunk.
Az o opció használata esetén a reguláris kifejezést csak egyszer értékeli ki a Perl futtató rendszer a script futása során, és ha szerepel benne olyan változó, amelynek az értéke a későbbiek során megváltozik, az nem fogja érdekelni a Perl-t. Példát az m operátornál mutatunk.
Az x opció használatakor a Perl a reguláris kifejezést kiterjesztett értelemben használja, ami azt jelenti, hogy ilyenkor a szóközöket csak akkor veszi figyelembe ha azok előtt \ karakter van. Egyébként úgy tekinti, mint olyan karakter, amely arra való, hogy olvashatóbb legyen a program. Ebben az esetben a Perl megjegyzés karakterét a # karaktert is megjegyzés kezdetének tekinti a program. Példát az m operátornál mutatunk.
Ha a reguláris kifejezésen belül zárójeleket használunk, akkor a $1, $2 ... változók
felveszik azoknaka részfüzéreknek az értékeit, amelyek a zárójelek között vannak. Ezek a $1,
$2 ... változók a blokk végéig, vagy a következő reguláris kifejezés kiértékeléséig használhatók.
Ajánlatos minnél előbb átmásolni őket. Ezeket a változókat lehet használni a helyettesítő füzérben is.
Ugyanezekre a részfüzérekre lehet hivatkozni már a reguláris kifejezésen belül is, amennyiben
valamilyen ismétlődést akarunk megkövetelni, például
$t = 'aegyabkettőbcháromc' ;
$i = 1;
$i++ while $t =~ s/(a|b|c)(.*)\1/$i/ ;
print "$t\n";
aminek a kimenete
123