Perl um� prov�d�t substituci zalo�enou na pou�it� regul�rn�ch �et�zc�. Substituce se prov�d� pomoc� funkce s, kter� je podobn� substituci ve vi editoru. Pro substituci se pou�ije srovn�vac� oper�tor =~. Pokud je srovn�vac� oper�tor vynech�n prov�d� se substituce na prom�nn� $_.
Chcete-li nahradit v�skyt �et�zce london �et�zcem London v prom�nn� $sentence pou�ijte p��kaz
$sentence =~ s/london/London/Je-li �et�zec ulo�en� v prom�nn� $_, pak m� p��kaz pro uvedenou n�hradu tvar
s/london/London/V�imn�te si, �e dva regul�rn� �et�zce jsou obklopeny celkem t�emi lom�tky.
P��kaz vrac� po�et proveden�ch substituc�, v tomto p��pad� 0 (false) nebo 1 (true). V�raz pro substituci je tedy mo�n� pou��t i jako podm�nku v p��kazu if.
s/london/London/gop�t je mo�n� pou��t prom�nnou $_.
Chceme-li nahradit v�skyt lOndon, lonDON, LoNDoN atd., �et�zcem London m��eme pou��t p��kaz
s/[Ll][Oo][Nn][Dd][Oo][Nn]/London/gExistuje v�ak jednodu��� zp�sob, a to pou��t volbu i (pro "ignore case"). P��kaz
s/london/London/giprovede glob�ln� substituci s ignorov�n�m typu p�smen (mal�, velk�).
$_ = "Lord Whopper of Fibbing"; s/([A-Z])/:\1:/g; print "$_\n";nahrad� ka�d� velk� p�smeno stejn�m p�smenem obklopen�m z ka�d� strany dvojte�kou. Vytiskne se tedy :L:ord :W:hopper of :F:ibbing. Prom�nn� $1,...,$9 jsou read-only; nen� mo�n� je modifikovat.
Dal�� p��klad je p��klad testov�n�
if (/(\b.+\b) \1/) { print "Slovo $1 se opakuje\n"; }Ozna�� ka�d� opakuj�c� se slovo. Ka�d� \b p�edstavuje hranici slova a znak .+ p�edstavuje libovoln� nepr�zdn� �et�zec, tedy \b.+\b p�edstavuje cokoli mezi dv�mi hranicemi slova, tedy slovo. Pou�ili jsme z�vorky a obsah z�vorek byl ulo�en jako speci�ln� znak \1. Tento sleci�ln� znak m��eme pou��t v dan�m regul�rn�m v�razu. Ve zbytku programu m��eme pracovat s prom�nnou $1, kter� m� stejn� obsah jako speci�ln� znak \1.
N�sleduj�c� p��klad vym�n� prvn� a posledn� znak na ��dku. ��dek je ulo�en� v prom�nn� $_
s/^(.)(.*)(.)$/\3\2\1/Znaky^ a $ reprezentuj� za��tek a konec ��dku. V \1 je ulo�en prvn� znak; v \2 je cokoli a� do posledn�ho znaku, kter� je ulo�en v \3. Cel� ��dka je tedy nahrazena ��dkou s prohozen�mi znaky \1 a \3.
P�i vyhled�v�n� jsou napln�ny i speci�ln� read-only prom�nn�
$` a
$& a
$', kter� je mo�n� d�le v programu pou��t. Prom�nn� jsou napln�ny n�sleduj�c�m zp�sobem:
$` za��tek �et�zce, a� do vyhled�van�ho pod�et�zce
$& vyhled�van� pod�et�zec
$' konec �et�zce od vyhled�van�ho pod�et�zce.
Tedy pokud napln�me prom�nnou $_ a provedeme uveden� vyhled�n� pod�et�zce pp
v prom�nn� $_
$_ = "Lord Wopper of Fibbing"; /pp/;jsou v�echny n�sleduj�c� v�razy jsou pravdiv�: (P�ipome�me, �e eq je �et�zcov� porovn�n�.)
$` eq "Lord Wo"; $& eq "pp"; $' eq "er of Fibbing";
P�ed vyhled�v�n�m se prov�d� konverze prom�nn�ch, kter� jsou pou�ity uvnit� lom�tek. Tedy p��kaz
$search = "the"; s/$search/xxx/g;nahrad� ka�d� v�skyt �et�zce the v prom�nn� $_ �et�zcem xxx. Pokud chcete nahradit ka�d� v�skyt �et�zce there, pak nezad�vejte s/$searchre/xxx/, nebo� by se nahrazovalo jm�no prom�nn� $searchre jej�m obsahem. Ale jm�no prom�nn� uzav�ete do slo�en�ch z�vorek, spr�vn� p��kaz tedy vypad�
$search = "the"; s/${search}re/xxx/;
$sentence =~ tr/abc/edf/P��kaz vrac� po�et proveden�ch nahrazen�. Je tedy mo�n� nap��klad p��kazem if testovat, zda se nahrazen� provedlo nebo ne.
if ( $sentence =~ tr/abc/edf/) { print "nahrazeni provedeno\n"; } else { print "v retezci se nevyskytuji znaky abc\n"; }
V�t�ina speci�ln�ch znak� pro RE se ve funkci tr nepou��v�. N�sleduj�c� p��klad zji��uje po�et hv�zdi�ek v prom�nn� $sentence a zji�t�n� ��slo ulo�� do prom�nn� $count.
$count = ($sentence =~ tr/*/*/);Poml�ka znamen� znaky mezi explicitn� uveden�mi znaky.
tr/a-z/A-Z/;
23 Amp, James Wa(tt),Zkuste je�t� tuto modifikaci: v�echny zdvojen� znaky budou v z�vork�ch krom� prvn�ho zdvojen�ho znaku na ��dku.
Nakonec m��eme zkusit program modifikovar tak, aby vyhled�van� �et�zec p�eb�ral jako parametr z p��kazov�ho ��dku. P�edpokl�d�m ,�e se v� program jmenuje pocitadlo.pl. Spou�t�te jej nap�. p��kazem
perl pocitadlo.plPokud program spust�te s n�kolika parametry p��kazem
perl pocitadlo.pl prvni druhy atdjsou tyto parametry ulo�eny v poli @ARGV. Tedy v na�em p��pad� je v $ARGV[0] �et�zec prvni a v $ARGV[1] �et�zec druhy a v $ARGV[2] �et�zec atd. Upravte program tak, aby o�ek�val jeden parametr a po��tal pouze ��dky, na kter�ch se vyskytne �et�zec udan� jako parametr. �et�zec op�t vyzna�te na ��dce pou�it�m z�vorek.