4

我有一个简单的 Perl 行

s/$var/'string'/g

问题是 $var 包含一个字符串,如jkdlsf$lkjl. 注意中间的美元符号。似乎因为这个美元符号,替换不起作用。当它在变量中时,我如何逃避它?

4

3 回答 3

10

使用\Q报价:

s/\Q$var/'string'/g
于 2013-05-28T17:01:26.830 回答
5

使用quotemetaor\Q\E嵌入的正则表达式构造:

s/\Q$var\E/'string'/g;

# or

my $var = quotemeta 'jkdlsf$lkjl';
s/$var/'string'/g;
于 2013-05-28T17:01:53.053 回答
0

你可以用反斜杠转义它们:$var=~s/\$/\\\$/g

于 2013-05-28T16:59:22.880 回答