String 如何用多值替换perl中的字符串

String 如何用多值替换perl中的字符串,string,perl,replace,str-replace,String,Perl,Replace,Str Replace,假设我有一个字符串和一个数组,如下所示: my $str = "currentStringwithKey<i>"; my @arr = ("1", "2"); 不使用for循环使用for来执行此操作 /r是非破坏性修饰符,用于返回替换并保持原始字符串不变 这是你想要的。这种方法将用替换文本替换,而不管在模板$str中出现在何处 @outputArray = map { my $i=$str; $i =~ s/\<i\>/$_/; $i } @arr @outputA

假设我有一个字符串和一个数组,如下所示:

my $str = "currentStringwithKey<i>";
my @arr = ("1", "2");

不使用for循环使用for来执行此操作

/r是非破坏性修饰符,用于返回替换并保持原始字符串不变


这是你想要的。这种方法将用替换文本替换
,而不管
在模板
$str
中出现在何处

@outputArray  = map { my $i=$str; $i =~ s/\<i\>/$_/; $i } @arr
@outputArray=map{my$i=$str;$i=~s/\/$\uu/;$i}@arr

您需要将
$str
复制到临时文件,因为replace可以在适当的位置工作。如果您直接使用
$str
,那么它的值将在第一次更改。

您的意思是
我的$str[i]=“currentstring”?如果您可以自己设置字符串标记,则可以使用sprintf:
my$str=“currentString%s”;我的@output=map{sprintf$str,$\u}@arr
@TLP谢谢!我使用的只是一个需要替换的字符的意思@PatoSáinz我的意思是,输入只是带有一些字符的字符串,我想用不同的值替换这些字符,这些值将产生
{“currentStringwithKey1”,“currentStringwithKey2”}
,而不是要求的那样。OP希望将文本
替换为数字。编辑后,它会这样做。但是如果
不是在最后呢?
$str
的值是一个模板,
是一个占位符。谢谢@mkHun,这就是我要找的。正则表达式上的
r
标志可以让你更干净地完成这项工作。只需使用
映射{$str=~s/$\ur}
就可以了。无需使用temp变量或转义
my $str = "currentStringwithKey<i>";
my @arr = ("1", "2");                 
my  @output = map{ $str=~s/<i>/$_/rg } @arr;  
#$str not to be changed because of the r modifier
print @output;
$output[0] = "currentStringwithKey1",
$output[1] = "currentStringwithKey2"
@outputArray  = map { my $i=$str; $i =~ s/\<i\>/$_/; $i } @arr