模式匹配的变量匹配问题

模式匹配的变量匹配问题

模式匹配的变量匹配问题
今天我在和"ljlyun"兄讨论模式匹配的时候发现一个问题,
就是perl关于变量的匹配不能有特殊符号,范例如下:
"我们从键盘输入要匹配的字符,然后进行匹配"
while (<STDIN>) {
chop($_);
my $find = $_;
#$_ 为用来匹配的查找表
if($_ =~ /$find/i) {
print "I find it";
}
这样如果变量$find里有特殊字符,比如说"(",")",":"就匹配不起来了,
所以我们只能采用了如下方法,在取得键盘输入字符后,使用
$find =~ s/\(/\\\(/; #特殊字符处理
$find =~ s/\)/\\\)/; #特殊字符处理
$find =~ s/\:/\\\:/; #特殊字符处理
这样就可以识别"("括号这些特殊字符的输入了,和大家分享一下.

不过我觉得这样还是比较繁,因为需要对需查找的表的所有特殊字符进行如上加"\"处理才行,
各位大侠有什么更好的方法吗?




[quote]--s/\Q$pattern_.
[quote]
s/\Q$pattern_from_STDIN\E/xxx/g;
[/quote]
或者对 quotemeta($pattern_from_STDIN) 一下
:-)
\Q \E转义对,OK,搞定拉,.
\Q \E转义对,OK,搞定拉,非常感谢![CCB]1[/CCB]