在Perl中,使用正则表达式对字符串执行替换并将值存储在不同变量中而不更改原始值的好方法是什么?
我通常只是复制字符串到一个新的变量,然后绑定到s / / regex,替换在新的字符串,但我想知道是否有更好的方法来做到这一点?
$newstring = $oldstring; $newstring =~ s/foo/bar/g;
解决方法
这是我一直用来获得一个字符串的修改副本,而不改变原来的习语:
(my $new = $original) =~ s/foo/bar/;
在perl 5.14.0或更高版本中,可以使用new / r non-destructive substitution modifier:
my $new = $old =~ s/foo/bar/r;