Hash-Map
view release on metacpan or search on metacpan
lib/Hash/Map.pm view on Meta::CPAN
b => $foo->b,
...
);
=head2 method map_modify and map_modify_ref
This is a combination of method "map_keys" and "modify".
The first parameter of the callback subroutine is the object itself.
The old value of the target hash is in $_;
Return the new value.
$obj = $obj->map_modify(
source_key1 => target_key1 => $code_ref1,
...
);
$obj = $obj->map_modify_ref([
source_key1 => target_key1 => $code_ref1,
...
]);
This method exists for the sake of completeness.
=head2 method map_modify_identical and map_modify_identical_ref
This is a combination of method "map_keys" and "modify".
The 1st parameter of the callback subroutine is the object itself.
The 2nd parameter is the source key and the 3rd parameter is the target key.
The old value of the target hash is in $_;
Return the new value.
$obj = $obj->map_modify_identical(
source_key1 => target_key1,
...
$code_ref,
);
$obj = $obj->map_modify_identical_ref(
{
source_key1 => target_key1,
...
},
$code_ref,
);
Replaces code like this:
%target = (
a => $foo->bar('z'),
b => $foo->bar('y'),
...
);
%target = (
a => $foo->z,
b => $foo->y,
...
);
=head2 method each_source, each_target, source_iterator, target_iterator
This methods allows to work with iterations.
while ( my ($key, $value) = $self->each_source ) {
...
}
while ( my ($key, $value) = $self->each_target ) {
...
}
my $iterator_code = $self->source_iterator;
while ( my ($key, $value) = $iterator_code->() ) {
...
}
my $iterator_code = $self->target_iterator;
while ( my ($key, $value) = $iterator_code->() ) {
...
}
=head2 subroutine hash_map
This subroutine is for the fuctional interface only.
%target_hash = hash_map(
\%source_hash,
# The following references are sorted anyway.
# Running in order like written.
[ qw(key1 key2) ], # copy_keys from source to target hash
[ qw(key3 key4), $code_ref ], # copy_keys, code_ref to rename keys
{
source_key1 => 'target_key', # map_keys from source to target hash
source_key2 => $code_ref, # modify values in target hash
},
);
=head2 subroutine hashref_map
Similar, only the subroutine name and the return value has chenged.
$target_hashref = hashref_map(
$source_hashref,
...
);
=head1 DIAGNOSTICS
nothing
=head1 CONFIGURATION AND ENVIRONMENT
nothing
=head1 DEPENDENCIES
L<Carp|Carp>
L<Clone|Clone>
L<Scalar::Util|Scalar::Util>
( run in 1.340 second using v1.01-cache-2.11-cpan-71847e10f99 )