regnames_count#

Return the number of distinct named capture groups in the pattern of the most recent successful match.

The count is always the number of distinct names defined in the pattern — it does not depend on which names participated in the match, and it does not necessarily match the length of what regnames() returns when that is called without its $all argument.

Synopsis#

use re 'regnames_count';
"abc" =~ /(?<a>x)|(?<b>b)/;
my $n = regnames_count();     # 2

What you get back#

An integer count, or undef if there was no prior successful match in the current scope.

Examples#

"foobar" =~ /(?<w>\w+)/;
print regnames_count();         # 1

"abc" =~ /(?<a>.)(?<b>.)(?<a>.)/;   # duplicate name 'a'
print regnames_count();         # 2 — counts distinct names

Edge cases#

  • No prior successful match — returns undef.

  • Pattern has no named captures — returns 0.