Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 在变量中转义一个美元符号_Perl - Fatal编程技术网

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

我有一行简单的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$lkjl';
s/$var/'string'/g;

没有回答我的问题。@您的问题是“当它在存储变量中时,如何转义它?”上面的答案正好告诉您。如果您不想解释$var中的任何内容,请使用
\Q..\E
。如果只希望转义
$
s,而希望其他字符保持其特殊状态,请使用上述方法。如果您想要其他东西,恐怕我不知道您在问什么。此解决方案还将修改
$var
的内容,这一副作用不一定可以接受,具体取决于具体情况。)“差不多了!”Raina77可惜链接断了。我是通过搜索
\Q
的含义来到这里的。还有其他解释吗?那篇“有用的文章”是的,这篇解释得很好,效果很好。非常感谢。