perl case insensitive switch as variable?

时间:2014-05-05 14:14:24

标签: regex perl

在perl中,我希望能够做到这一点:

$switches = "is";
$regexp = "\\d";
if ($string =~ m/$regexp/$switches) {
 do something...
}

换句话说,如何在运行时使“$ switches”可选? (用户可以从各种搜索选项中进行选择)

1 个答案:

答案 0 :(得分:11)

if ($string =~ /(?$flags:$pattern)/) {
   ...
}

注意:如果$pattern是一个编译模式(即由qr//生成)而不是字符串,那么这不会起作用,因为它是传递给{{1}的标志影响用qr//编译的模式。您必须将标记传递给qr//而不是qr//