我想编写一个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");
答案 0 :(得分:1)
我建议不要这样做,因为"hello\s+world"
返回的内容与qr/hello\s+world/
返回的正则表达式一样多。
也就是说,您可以使用内置re::is_regexp
来检查标量是否包含由qr
编译的正则表达式模式。