替换 perl 脚本中的字符串

问题描述 投票:0回答:1

我有密码:

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/;

不做,我不知道为什么,请有人能帮忙吗?

string perl replace special-characters
1个回答
1
投票

在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

© www.soinside.com 2019 - 2024. All rights reserved.