You are viewing the version of this documentation from Perl 5.40.0-RC2. This is a development version of Perl.

Similar to @+, the %+ hash allows access to the named capture buffers, should they exist, in the last successful match in the currently active dynamic scope. (See "Scoping Rules of Regex Variables").

For example, $+{foo} is equivalent to $1 after the following match:

'foo' =~ /(?<foo>foo)/;

The keys of the %+ hash list only the names of buffers that have captured (and that are thus associated to defined values).

If multiple distinct capture groups have the same name, then $+{NAME} will refer to the leftmost defined group in the match.

The underlying behaviour of %+ is provided by the Tie::Hash::NamedCapture module.

Note: %- and %+ are tied views into a common internal hash associated with the last successful regular expression. Therefore mixing iterative access to them via each may have unpredictable results. Likewise, if the last successful match changes, then the results may be surprising.

This variable was added in Perl v5.10.0. The %{^CAPTURE} alias was added in 5.25.7.

This variable is read-only, and its value is dynamically scoped.