In Regexes§
See primary documentation in context for S/// non-destructive substitution.
say S/o .+ d/new/ with 'old string'; # OUTPUT: «new string» S:g/« (.)/$0.uc()/.say for <foo bar ber>; # OUTPUT: «FooBarBer»
S///
uses the same semantics as the s///
operator, except it leaves the original string intact and returns the resultant string instead of $/
($/
still being set to the same values as with s///
).
Note: since the result is obtained as a return value, using this operator with the ~~
smartmatch operator is a mistake and will issue a warning. To execute the substitution on a variable that isn't the $_
this operator uses, alias it to $_
with given
, with
, or any other way. Alternatively, use the .subst
method.