Data-SmartMunge
view release on metacpan or search on metacpan
lib/Data/SmartMunge.pm view on Meta::CPAN
}
# ABSTRACT: Munge scalars, hashes and arrays in flexible ways
use Exporter qw(import);
our %EXPORT_TAGS = (util => [qw(smart_munge delete_matching)],);
our @EXPORT_OK = @{ $EXPORT_TAGS{all} = [ map { @$_ } values %EXPORT_TAGS ] };
my %munger_dispatch = (
STRING_CODE => sub { $_[1]->($_[0]) },
ARRAY_CODE => sub { $_[1]->($_[0]) },
HASH_CODE => sub { $_[1]->($_[0]) },
HASH_HASH => sub { +{ %{ $_[0] }, %{ $_[1] } } }, # overlay
);
sub smart_munge {
my ($data, $munger) = @_;
unless (defined $munger) {
return $data unless wantarray;
return @$data if ref $data eq 'ARRAY';
return %$data if ref $data eq 'HASH';
}
t/01_misc.t view on Meta::CPAN
test_smart_munge(
{ a => 'foo', b => 'bar' },
undef,
{ a => 'foo', b => 'bar' },
'undefined munger'
);
test_smart_munge(
{ a => 'foo', b => 'bar' },
{ a => undef, c => 'baz' },
{ a => undef, b => 'bar', c => 'baz' },
'overlay'
);
( run in 0.606 second using v1.01-cache-2.11-cpan-49f99fa48dc )