试图用方括号匹配一个字符串。
例如:
my $foo = "debug_bus[0]"; my $bar = "debug_bus[0][12:0] = some_value;"; if ($bar =~ $foo) { print "Match\n"; } else { print "No Match\n"; }
我会期望“匹配”,但是我不断收到“不匹配”,这使我相信“ [0]”中的括号可能会引起问题?
您需要使用(内部)或(外部)在正则表达式中正确转义(“引号”)元字符\Q...\E
quotemeta
因此,您需要:
$bar =~ m/\Q$foo\E/;
要不就:
$bar =~ /\Q$foo/;
您可以省略m
定界符为的时间//
,而\E
在这种情况下则不需要,因为模式中没有其他内容。