我想编写一个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
编译的正则表达式模式。