use warnings;
use strict;
use Data::Dump;
my $s = "a aa aaa aaaa";
$s =~ /(?a+) (?a+) (?:(?a+)bbb)?/;
dd \%+;
dd \%{^CAPTURE};
dd \%-;
dd \%{^CAPTURE_ALL};
tie my %hash, "Tie::Hash::NamedCapture", all => 1;
dd \%hash
__END__
{
# tied Tie::Hash::NamedCapture
a => "a",
}
{
# tied Tie::Hash::NamedCapture
a => "a",
}
{
# tied Tie::Hash::NamedCapture
a => ["a", "aa", undef],
}
{
# tied Tie::Hash::NamedCapture
a => "a",
}
{
# tied Tie::Hash::NamedCapture
a => ["a", "aa", undef],
}
####
case '\003': /* $^CHILD_ERROR_NATIVE */
if (memEQs(name, len, "\003HILD_ERROR_NATIVE"))
goto magicalize;
/* @{^CAPTURE} %{^CAPTURE} */
if (memEQs(name, len, "\003APTURE")) {
AV* const av = GvAVn(gv);
const Size_t n = *name;
sv_magic(MUTABLE_SV(av), (SV*)n, PERL_MAGIC_regdata, NULL, 0);
SvREADONLY_on(av);
if (sv_type == SVt_PVHV || sv_type == SVt_PVGV)
require_tie_mod_s(gv, '-', "Tie::Hash::NamedCapture",0);
} else /* %{^CAPTURE_ALL} */
if (memEQs(name, len, "\003APTURE_ALL")) {
if (sv_type == SVt_PVHV || sv_type == SVt_PVGV)
require_tie_mod_s(gv, '+', "Tie::Hash::NamedCapture",0);
}
break;