我有密码:
my $orgstr = "\$map_remain{3}{1}=\"\${prefix}_123456\";";
my $cell = "\${prefix}_123456";
$orgstr =~ s/$cell/abc/;
print "new str: $orgstr\n";
我想将 ${prefix}_123456 替换为 abc 但是这个
$orgstr =~ s/$cell/abc/;
不做,我不知道为什么,请有人能帮忙吗?
在Perl中,美元符号$和花括号{}是用来表示变量和变量插值的特殊字符。为了在正则表达式替换中使用它们,您需要使用反斜杠转义它们。
尝试修改您的代码如下:
my $orgstr = "\$map_remain{3}{1}=\"\${prefix}_123456\";";
my $cell = "\${prefix}_123456";
$orgstr =~ s/\Q$cell\E/abc/;
print "new str: $orgstr\n";
\Q 和\E 用于转义它们之间的所有特殊字符。在这种情况下,它将转义 $cell 中的 $ 和 {}。这应该允许替换按预期工作。
我使用 ChatGPT 寻求帮助。也许它可以帮助你。 Chúc mắn