Perl 在变量中转义一个美元符号
我有一行简单的Perl代码Perl 在变量中转义一个美元符号,perl,Perl,我有一行简单的Perl代码 s/$var/'string'/g 问题是$var包含类似于jkdlsf$lkjl的字符串。注意中间的美元符号。似乎是因为这个美元符号,替代品不起作用。当它位于变量内部时,如何转义?可以使用反斜杠转义:$var=~s/\$/\\\$/g使用\Q引用: s/\Q$var/'string'/g 使用quotemeta或\Q和\E嵌入式正则表达式构造: s/\Q$var\E/'string'/g; # or my $var = quotemeta 'jkdlsf$l
s/$var/'string'/g
问题是$var包含类似于
jkdlsf$lkjl
的字符串。注意中间的美元符号。似乎是因为这个美元符号,替代品不起作用。当它位于变量内部时,如何转义?可以使用反斜杠转义:$var=~s/\$/\\\$/g
使用\Q
引用:
s/\Q$var/'string'/g
使用
quotemeta
或\Q
和\E
嵌入式正则表达式构造:
s/\Q$var\E/'string'/g;
# or
my $var = quotemeta 'jkdlsf$lkjl';
s/$var/'string'/g;
没有回答我的问题。@您的问题是“当它在存储变量中时,如何转义它?”上面的答案正好告诉您。如果您不想解释$var中的任何内容,请使用
\Q..\E
。如果只希望转义$
s,而希望其他字符保持其特殊状态,请使用上述方法。如果您想要其他东西,恐怕我不知道您在问什么。此解决方案还将修改$var
的内容,这一副作用不一定可以接受,具体取决于具体情况。)“差不多了!”Raina77可惜链接断了。我是通过搜索\Q
的含义来到这里的。还有其他解释吗?那篇“有用的文章”是的,这篇解释得很好,效果很好。非常感谢。