为什么我的正则表达式会因某些替换而失败?

Sha*_*mik 2 regex perl

我是perl的新手,不知道如何实现以下目标.我正在读取一个文件,并将这些行放在一个名为$ tline的变量中.接下来,我试图从$ tline中替换一些字符.如果$ tline有一些特殊字符,如(,?,=等),这个替换会失败.如何从这个变量$ tline中转义特殊字符?

if ($tline ne "") {

   $tline =~ s/\//\%;
}
Run Code Online (Sandbox Code Playgroud)

编辑

对不起困惑.这是我想要做的.

$tline =~ s/"\//"\<\%\=request\.getContextPath\(\)\%\>\//;
Run Code Online (Sandbox Code Playgroud)

这适用于大多数情况.但是当输入文件有?在它,它是失败的.

Sin*_*nür 7

怎么样:

$tline =~ s/\Q$var\E/;
Run Code Online (Sandbox Code Playgroud)

这将导致quotemeta应用于其内容$var被用作模式.