将正则表达式或字符串传递给Perl子例程

时间:2017-01-13 21:01:56

标签: perl

我想编写一个Perl子例程,它将字符串值或正则表达式值作为参数,并根据结果执行不同的操作。为了这个问题,它只返回"regex"如果它是正则表达式值而"string"如果它不是正则表达式:

sub value_string_or_regex {
    my ($value) = @_;
    my $result = '';
    # magic here
    return $result;
}

因此,以下代码将打印出" string":

print(value_string_or_regex("hello world") . "\n");

以下代码将打印出" regex":

print(value_string_or_regex(qr/^.*world$/) . "\n");

1 个答案:

答案 0 :(得分:1)

我建议不要这样做,因为"hello\s+world"返回的内容与qr/hello\s+world/返回的正则表达式一样多。

也就是说,您可以使用内置re::is_regexp来检查标量是否包含由qr编译的正则表达式模式。