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   127697 use strict;
  4         8  
  4         102  
4 4     4   18 use warnings;
  4         9  
  4         109  
5 4     4   3192 use utf8;
  4         44  
  4         21  
6 4     4   107 use Scalar::Util;
  4         6  
  4         256  
7            
8 4     4   17 use base qw( Exporter );
  4         7  
  4         1385  
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.22';
18            
19             sub key_exists($$) {
20 41     41 1 1030 my $hash_ref = shift;
21 41         58 my $array_ref = shift;
22            
23 41 100       202 return 0 if Scalar::Util::reftype $hash_ref ne 'HASH';
24            
25 37         62 my $key = shift @$array_ref;
26            
27 37 100       100 if ( exists $hash_ref->{$key} ) {
28 29 100       68 if ( scalar @$array_ref > 0 ) {
29 16         47 return &key_exists( $hash_ref->{$key}, $array_ref );
30             } else {
31 13         70 return 1;
32             }#fi
33             } else {
34 8         47 return 0;
35             }#fi
36             }
37            
38             sub every_keys($$) {
39 2     2 1 19 my $hash_ref = shift;
40 2         3 my $list_array_ref = shift;
41            
42 2         5 foreach my $array_ref ( @$list_array_ref ) {
43 5 100       11 return 0 unless key_exists( $hash_ref, $array_ref );
44             }#hcaerof
45            
46 1         7 return 1;
47             }
48            
49             sub some_keys($$) {
50 2     2 1 20 my $hash_ref = shift;
51 2         4 my $list_array_ref = shift;
52            
53 2         7 foreach my $array_ref ( @$list_array_ref ) {
54 4 100       10 return 1 if key_exists( $hash_ref, $array_ref );
55             }#hcaerof
56            
57 1         5 return 0;
58             }
59            
60             1;
61            
62            
63             __END__