sle*_*ske 29 regex perl replace
在Perl中,运算符s/用于替换字符串的一部分.现在s/将改变其参数(字符串).然而,我想要替换打印它的部分字符串,如
print "bla: ", replace("a","b",$myvar),"\n";
Run Code Online (Sandbox Code Playgroud)
replace在Perl中有这样的功能,或者其他一些方法吗?s/在这种情况下不会直接工作,我想避免使用辅助变量.有没有办法在线进行此操作?
dax*_*xim 65
未经测试:
require 5.013002;
print "bla: ", $myvar =~ s/a/b/r, "\n";
Run Code Online (Sandbox Code Playgroud)
替换运算符现在支持复制输入变量的/ r选项,在副本上执行替换并返回结果.原件保持不变.
my $old = 'cat';
my $new = $old =~ s/cat/dog/r;
# $old is 'cat' and $new is 'dog'
Run Code Online (Sandbox Code Playgroud)
如果您有 Perl 5.14 或更高版本,您可以使用/r带有替换运算符的选项来执行非破坏性替换:
print "bla: ", $myvar =~ s/a/b/r, "\n";
Run Code Online (Sandbox Code Playgroud)
在早期版本中,您可以使用do()带有临时词法变量的块来实现相同的效果,例如:
print "bla: ", do { (my $tmp = $myvar) =~ s/a/b/; $tmp }, "\n";
Run Code Online (Sandbox Code Playgroud)