sub array_each_orHash { my $comparator = shift; my $handleArrayOrHash = sub { my $data = shift; return array_each($comparator) if (ref($data) eq "ARRAY"); return $comparator if (ref($data) eq "HASH"); }; return code( \&$handleArrayOrHash ); } #### sub array_each_orHash { my $comparator = shift; my $handleArrayOrHash = sub { my $data = shift; my $result = (0, 'must pass an ARRAY or HASH'); $result = eq_deeply($data, array_each($comparator)) if (ref($data) eq "ARRAY"); $result = eq_deeply($data, $comparator) if (ref($data) eq "HASH"); return $result; }; return code( \&$handleArrayOrHash ); } #### use strict; use warnings; package Test::Deep::ArrayEach; use Test::Deep::Cmp; sub init { my $self = shift; my $val = shift; $self->{val} = $val; } sub descend { my $self = shift; my $got = shift; my $exp = [ ($self->{val}) x @$got ]; return Test::Deep::descend($got, $exp); } 1;