在Perl中,使用正则表达式对字符串执行替换并将值存储在另一个变量中而不更改原始值的好方法是什么?
我通常只是将字符串复制到一个新变量,然后将其绑定到正在s///替换新字符串的正则表达式,但我想知道是否有更好的方法来做到这一点?
$newstring = $oldstring;
$newstring =~ s/foo/bar/g;
Run Code Online (Sandbox Code Playgroud) 以下来自http://perldoc.perl.org/perlrequick.html#Search-and-replace的代码片段 给了我
Bareword发现运营商在blub.pl第2行,"s/dogs/cats/r"附近的预期位置
这有什么问题?我在Windows XP上使用Perl 5.12.4.
码:
$x = "I like dogs.";
$y = $x =~ s/dogs/cats/r;
print "$x $y\n";
Run Code Online (Sandbox Code Playgroud) 如果您找到更好的方式来描述它,请随意修改此问题的标题.
想象一下,我们有:
my $foo = something;
my $newfoo = $foo =~ s/.*/something else/;
Run Code Online (Sandbox Code Playgroud)
我以为我会有$newfoo = something else,而我发现它等于1.我想这个1就是说'匹配和替换成功'.
我发现的唯一解决方案是后续的:
my $foo = something;
my $newfoo = $foo;
$newfoo =~ s/.*/something else/;
Run Code Online (Sandbox Code Playgroud)
有没有办法完成相同的任务,即创建一个新的变量与正则表达式的结果而不修改第一个变量,没有中间步骤?