假设我有一个子程序/方法,用户可以调用它来测试一些数据(例如)可能如下所示:
sub test_output {
my ($self, $test) = @_;
my $output = $self->long_process_to_get_data();
if ($output =~ /\Q$test/) {
$self->assert_something();
}
else {
$self->do_something_else();
}
}
Run Code Online (Sandbox Code Playgroud)
通常,$test是一个字符串,我们在输出中的任何地方寻找.这是一个界面,使调用非常容易.然而,我们发现有时候,直线串是有问题的 - 例如,一个大的,可能不同数量的空间......一个模式,如果你愿意的话.因此,我想让他们作为一个选项传递正则表达式.我可以这样做:
$output =~ $test
Run Code Online (Sandbox Code Playgroud)
如果我可以假设它总是一个正则表达式,但啊,但向后兼容!如果它们传入一个字符串,它仍然需要像原始字符串一样测试它.
那么在这种情况下,我需要测试一下是否$test是一个正则表达式.是否有任何良好的工具来检测标量是否有编译的正则表达式?