<p>In Perl, what is a good way to perform a replacement on a string using a regular expression and store the value in a different variable, without changing the original?</p>

<p>I usually just copy the string to a new variable then bind it to the <code>s///</code> regex that does the replacement on the new string, but I was wondering if there is a better way to do this?</p>

<pre><code>$newstring = $oldstring;
$newstring =~ s/foo/bar/g;
</code></pre>

This is the idiom I've always used to get a modified copy of a string without changing the original:
```
```
(my $newstring = $oldstring) =~ s/foo/bar/g;
```
```
In perl 5.14.0 or later, you can use the new
```
/r
```
non-destructive substitution modifier
:
```
```
my $newstring = $oldstring =~ s/foo/bar/gr;
```
```
NOTE:
The above solutions work without
```
g
```
too. They also work with any other modifiers.
SEE ALSO:
```
perldoc perlrequick
```
: Perl regular expressions quick start