in reply to Re: ref() and Regexp
in thread ref() and Regexp

Or, hide that in a subroutine is_regex() or something similar.

Like this?

BEGIN { if (!defined(&re::is_regexp)) { package re; my $re_class = ref qr//; *is_regexp = sub($) { local *__ANON__ = 'is_regexp'; return UNIVERSAL::isa($_[0], $re_class); }; } }

Using your philosophy to avoid magical constants, it checks if re::is_regexp is defined rather than checking $] for 5.10.

BEGIN and the prototype duplicates the behaviour of 5.10's re::is_regexp.

It uses isa instead of ref so regexes can be made detectable even if there's a need to rebless the regex (by adding Regex to that class's @ISA). It's not an invitation for non-regexes to pretend to be regexes.

Replies are listed 'Best First'.
Re^3: ref() and Regexp
by HeatSeekerCannibal (Beadle) on Feb 01, 2008 at 01:26 UTC