is_regexp#

Return true if the argument is a compiled regular expression.

Unlike ref or UNIVERSAL::isa, this function sees through blessing and overloading — it looks at the value’s internal type tag, so a qr// blessed into another class, or an object with a stringification overload, is still correctly recognised.

Synopsis#

use re 'is_regexp';
if (is_regexp($value)) { ... }

What you get back#

The same true / false values Perl uses everywhere else: &PL_sv_yes (the canonical true) or &PL_sv_no (the canonical false-but-defined).

Examples#

is_regexp(qr/foo/);             # true
is_regexp("not a regex");       # false
is_regexp(\"not a regex");      # false — scalar ref, not a qr//
my $blessed = bless qr/foo/, 'My::RE';
is_regexp($blessed);            # true — sees through the bless

Edge cases#

  • Called with zero or more than one argument — croaks with Usage: re::is_regexp(sv).

  • Non-reference scalars — always false.

  • References that aren’t qr// (arrayref, hashref, coderef, scalar ref) — always false.