Como verifico se um escalar possui um regex compilado nele com Perl?

Digamos que eu tenho uma sub-rotina / método que um usuário pode chamar para testar alguns dados que (como um exemplo) podem ser assim:

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();
    }
}

Normalmente,$test é uma string que procuramos em qualquer lugar da saída. Essa foi uma interface criada para facilitar a chamada. No entanto, descobrimos que, às vezes, uma string reta é problemática - por exemplo, um número grande e possivelmente variável de espaços ... um padrão, se você preferir. Assim, gostaria de deixá-los passar uma regex como uma opção. Eu poderia apenas fazer:

$output =~ $test

se eu pudesse assumir que é sempre uma regex, mas ah, mas a compatibilidade com versões anteriores! Se eles passarem em uma sequência, ainda será necessário testá-la como uma sequência bruta.

Então, nesse caso, precisarei testar para ver se$test é uma regex. Existe alguma boa facilidade para detectar se um escalar possui ou não uma regex compilada?

questionAnswers(3)

yourAnswerToTheQuestion