相关疑难解决方法(0)

如何使用Perl检查标量中是否包含已编译的正则表达式?

假设我有一个子程序/方法,用户可以调用它来测试一些数据(例如)可能如下所示:

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是一个正则表达式.是否有任何良好的工具来检测标量是否有编译的正则表达式?

regex perl

4
推荐指数
2
解决办法
587
查看次数

标签 统计

perl ×1

regex ×1