在Perl正则表达式中使用包含特殊字符的变量

| 我正在尝试在数组中搜索包含$ inbucket [0]的行。我的某些$ inbucket [0]值包含特殊字符。该脚本完全可以实现我想要的功能,直到遇到特殊字符为止。 我希望查询不区分大小写,匹配字符串$ var的任何部分,并按字面意义处理特殊字符,就好像它们不是特殊的一样。有任何想法吗? 谢谢!
sub loopthru() {
    warn \"Loopthru begun on $inbucket[0]\\n\";
    foreach $c (@chat) {
        $var = $c->msg;
        $lookfor2 = $inbucket[0];
        if ( $var =~ /$lookfor2/i ) {
            ($to,$from) = split(\'-\',$var);
            $from =~ s/\\.$//;
            print MYFILE \"$to\\t$from\\n\";
            &fillbucket($to);
            &fillbucket($from);
        }
    }
}
    
已邀请:
        您可以使用quotemeta,该参数返回其参数的值,并用所有非\“ word \”字符加反斜杠。
$lookfor2 = quotemeta $inbucket[0];
或者,您可以使用
\\Q
转义,这在perlre中进行了讨论。简而言之,它将引用(禁用)模式元字符,直到遇到“ 3”为止。
if ( $var =~ /\\Q$lookfor2/i ) {
    
        我想你在找
$var =~ /\\Q$lookfor2/i
Perl常见问题     

要回复问题请先登录注册