将正则表达式或字符串传递到 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");

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

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

最新更新