Return `ref qr/.../` 的值
Return value of `ref qr/.../`
ref:
But note that qr//
scalars are created already blessed, so ref qr/.../
will likely return Regexp
.
“可能”是否意味着 ref qr/.../
也可能 return 除了 Regexp
我认为它指的是有人可以重新祝福正则表达式,警告 ref($something) eq 'Regexp'
并非 100% 可靠。
use 5.010;
my $x = qr/a/;
say ref($x);
bless $x, "Foo";
say ref($x);
say "a" =~ /$x/;
Regex
Foo
1
除了上述假阴性之外,还可能出现假阳性,因为有人可以将不是正则表达式的东西祝福到 Regexp
。 reftype
是一个更好的工具。
use 5.010;
use Scalar::Util qw( reftype );
my $re = bless(qr/a/, "Foo");
my $not = bless({}, "Regexp");
say ref($re), " - ", reftype($re);
say ref($not), " - ", reftype($not);
Foo - REGEXP
Regexp - HASH
ref:
But note that
qr//
scalars are created already blessed, soref qr/.../
will likely returnRegexp
.
“可能”是否意味着 ref qr/.../
也可能 return 除了 Regexp
我认为它指的是有人可以重新祝福正则表达式,警告 ref($something) eq 'Regexp'
并非 100% 可靠。
use 5.010;
my $x = qr/a/;
say ref($x);
bless $x, "Foo";
say ref($x);
say "a" =~ /$x/;
Regex
Foo
1
除了上述假阴性之外,还可能出现假阳性,因为有人可以将不是正则表达式的东西祝福到 Regexp
。 reftype
是一个更好的工具。
use 5.010;
use Scalar::Util qw( reftype );
my $re = bless(qr/a/, "Foo");
my $not = bless({}, "Regexp");
say ref($re), " - ", reftype($re);
say ref($not), " - ", reftype($not);
Foo - REGEXP
Regexp - HASH