syntax s///
Documentation for syntax s/// assembled from the following types:
language documentation Operators
From Operators
(Operators) s///
my $str = 'old string'; $str ~~ s/o .+ d/new/; say $str; # OUTPUT: «new string»
s/// operates on the $_ topical variable, changing it in place. It uses the given Regex to find portions to replace and changes them to the provided replacement string. Sets $/ to the Match object or, if multiple matches were made, a List of Match objects. Returns $/.
It's common to use this operator with the ~~ smartmatch operator, as it aliases left-hand side to $_, which s/// uses.
Regex captures can be referenced in the replacement part; it takes the same adverbs as the .subst method, which go between the s and the opening /, separated with optional whitespace:
my $str = 'foo muCKed into the lEn';
# replace second 'o' with 'x'
$str ~~ s:2nd/o/x/;
# replace 'M' or 'L' followed by non-whitespace stuff with 'd'
# and lower-cased version of that stuff:
$str ~~ s :g :i/<[ML]> (\S+)/d{lc $0}/;
say $str; # OUTPUT: «fox ducked into the den»
You can also use a different delimiter:
my $str = 'foober';
$str ~~ s!foo!fox!;
$str ~~ s{b(.)r} = " d$0n";
say $str; # OUTPUT: «fox den»
Non-paired characters can simply replace the original slashes. Paired characters, like curly braces, are used only on the match portion, with the substitution given by assignment (of anything: a string, a routine call, etc.).