可能重复:
在 Perl 的变量中用反斜杠替换文本
为什么这段代码不起作用?
my $foo = '\aa\bb';
my $bar = '\aa\bb\ee\ss.txt';
say $bar =~ m/^$foo.*$/ ? 'OK' : 'BAD';
使用正斜杠就可以了。
可能重复:
在 Perl 的变量中用反斜杠替换文本
为什么这段代码不起作用?
my $foo = '\aa\bb';
my $bar = '\aa\bb\ee\ss.txt';
say $bar =~ m/^$foo.*$/ ? 'OK' : 'BAD';
使用正斜杠就可以了。
在将您的正则表达式放在那里之前,您可能应该quotemeta
先使用。
my $foo = quotemeta('\aa\bb');
放入正则表达式时的反斜杠具有特殊含义。quotemeta
将逃避它们,以便从字面上匹配它们。
You are using
/^\aa\bb.*$/
\a
matches the "alarm" character.\b
matches a word boundary.You want to generate a pattern that matches a given string. For that, you can use quotemeta
.
my $pat = quotemeta($foo);
/^$pat.*$/
quotemeta
can also be called using \Q..\E
.
/^\Q$pat\E.*$/