File: tiehash.t

package info (click to toggle)
perl 5.42.0-2
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 128,392 kB
  • sloc: perl: 534,963; ansic: 240,563; sh: 72,042; pascal: 6,934; xml: 2,428; yacc: 1,360; makefile: 1,197; cpp: 208; lisp: 1
file content (42 lines) | stat: -rw-r--r-- 1,024 bytes parent folder | download | duplicates (4)
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();