File Coverage

blib/lib/Deep/Hash/Exists.pm
Criterion Covered Total %
statement 34 34 100.0
branch 10 10 100.0
condition n/a
subroutine 8 8 100.0
pod 3 3 100.0
total 55 55 100.0


line stmt bran cond sub pod time code
1             package Deep::Hash::Exists;
2            
3 4     4   138951 use strict;
  4         12  
  4         112  
4 4     4   20 use warnings;
  4         6  
  4         109  
5 4     4   3634 use utf8;
  4         46  
  4         22  
6 4     4   107 use Scalar::Util;
  4         6  
  4         258  
7            
8 4     4   19 use base qw( Exporter );
  4         7  
  4         1539  
9            
10             our @EXPORT = qw();
11             our @EXPORT_OK = qw(
12             key_exists
13             every_keys
14             some_keys
15             );
16             our %EXPORT_TAGS = ( all => [ @EXPORT, @EXPORT_OK ] );
17             our $VERSION = '0.21';
18            
19             sub key_exists($$) {
20 37     37 1 828 my $hash_ref = shift;
21 37         48 my $array_ref = shift;
22            
23 37 100       177 return 0 if Scalar::Util::reftype $hash_ref ne 'HASH';
24            
25 33         53 my $key = shift @$array_ref;
26            
27 33 100       82 if ( exists $hash_ref->{$key} ) {
28 27 100       67 if ( scalar @$array_ref > 0 ) {
29 14         45 return &key_exists( $hash_ref->{$key}, $array_ref );
30             } else {
31 13         74 return 1;
32             }#fi
33             } else {
34 6         29 return 0;
35             }#fi
36             }
37            
38             sub every_keys($$) {
39 2     2 1 28 my $hash_ref = shift;
40 2         4 my $list_array_ref = shift;
41            
42 2         8 foreach my $array_ref ( @$list_array_ref ) {
43 5 100       13 return 0 unless key_exists( $hash_ref, $array_ref );
44             }#hcaerof
45            
46 1         10 return 1;
47             }
48            
49             sub some_keys($$) {
50 2     2 1 21 my $hash_ref = shift;
51 2         4 my $list_array_ref = shift;
52            
53 2         4 foreach my $array_ref ( @$list_array_ref ) {
54 4 100       9 return 1 if key_exists( $hash_ref, $array_ref );
55             }#hcaerof
56            
57 1         4 return 0;
58             }
59            
60             1;
61            
62            
63             __END__