File Coverage

blib/lib/Hash/Util/Set.pm
Criterion Covered Total %
statement 26 29 89.6
branch 2 4 50.0
condition n/a
subroutine 4 4 100.0
pod n/a
total 32 37 86.4


line stmt bran cond sub pod time code
1             package Hash::Util::Set;
2 5     5   378003 use strict;
  5         10  
  5         199  
3 5     5   31 use warnings;
  5         18  
  5         298  
4              
5 5     5   67 use Exporter qw[import];
  5         9  
  5         2103  
6              
7             BEGIN {
8 5     5   21 our $VERSION = '0.07';
9 5         23 our @EXPORT_OK = qw[ keys_union
10             keys_intersection
11             keys_difference
12             keys_symmetric_difference
13             keys_disjoint
14             keys_equal
15             keys_subset
16             keys_proper_subset
17             keys_superset
18             keys_proper_superset
19             keys_any
20             keys_all
21             keys_none
22             keys_partition ];
23              
24 5         65 our %EXPORT_TAGS = (
25             all => \@EXPORT_OK,
26             operations => [qw[ keys_union
27             keys_intersection
28             keys_difference
29             keys_symmetric_difference
30             keys_partition ]],
31             predicates => [qw[ keys_disjoint
32             keys_equal
33             keys_subset
34             keys_proper_subset
35             keys_superset
36             keys_proper_superset ]],
37             membership => [qw[ keys_any
38             keys_all
39             keys_none ]],
40             aliases => [qw[ keys_or
41             keys_and
42             keys_sub
43             keys_xor ]],
44             );
45              
46 5         41 my $use_pp = $ENV{HASH_UTIL_SET_PP};
47 5 50       26 if (!$use_pp) {
48 5         10 eval {
49 5         1172 require Hash::Util::Set::XS; Hash::Util::Set::XS->import('0.03');
  0         0  
50             };
51 5         22 $use_pp = !!$@;
52             }
53              
54 5 50       23 if ($use_pp) {
55 5         2597 require Hash::Util::Set::PP;
56 5         480 Hash::Util::Set::PP->import(@EXPORT_OK);
57 5         14 our $IMPLEMENTATION = 'PP';
58             }
59             else {
60 0         0 Hash::Util::Set::XS->import(@EXPORT_OK);
61 0         0 our $IMPLEMENTATION = 'XS';
62             }
63              
64 5         13 *keys_or = \&keys_union;
65 5         15 *keys_and = \&keys_intersection;
66 5         9 *keys_sub = \&keys_difference;
67 5         11 *keys_xor = \&keys_symmetric_difference;
68              
69 5         196 push @EXPORT_OK, qw[ keys_or
70             keys_and
71             keys_sub
72             keys_xor ];
73             }
74              
75             1;