1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
#!./perl -w
use strict;
use Test::More;
# this would break the hash magic setup [perl #134193]
my ($ca, $c) = ( \@{^CAPTURE_ALL}, \@{^CAPTURE} );
my %hashes = (
'+' => \%+,
'-' => \%-,
'{^CAPTURE}' => \%{^CAPTURE},
'{^CAPTURE_ALL}' => \%{^CAPTURE_ALL},
);
foreach (['plus1'],
['minus1', all => 1],
['plus2', all => 0],
['plus3', zlonk => 1],
['minus2', thwapp => 0, all => 1],
) {
my $name = shift @$_;
my $hash = $hashes{$name} = {};
isa_ok(tie(%$hash, 'Tie::Hash::NamedCapture', @$_),
'Tie::Hash::NamedCapture', "%$name");
}
is("abcdef" =~ /(?<foo>[ab])*(?<bar>c)(?<foo>d)(?<bar>[ef]*)/, 1,
"We matched");
foreach my $name (qw(+ {^CAPTURE} plus1 plus2 plus3)) {
my $hash = $hashes{$name};
is_deeply($hash, { foo => 'b', bar => 'c' }, "%$name is as expected");
}
foreach my $name (qw(- {^CAPTURE_ALL} minus1 minus2)) {
my $hash = $hashes{$name};
is_deeply($hash, { foo => [qw(b d)], bar => [qw(c ef)] },
"%$name is as expected");
}
done_testing();
|