我有一行简单的Perl
s/$var/'string'/g
问题是$ var包含类似jkdlsf$lkjl
的字符串。请注意中间的美元符号。似乎因为这个美元符号,替换不起作用。当它在变量中时如何逃避?
答案 0 :(得分:10)
使用\Q
引用:
s/\Q$var/'string'/g
答案 1 :(得分:5)
使用quotemeta
或\Q
和\E
嵌入式正则表达式构造:
s/\Q$var\E/'string'/g;
# or
my $var = quotemeta 'jkdlsf$lkjl';
s/$var/'string'/g;
答案 2 :(得分:0)
您可以使用反斜杠转义它们:$var=~s/\$/\\\$/g