{
use Scalar::Util ();
+
my $next_item_from_array = sub {
my @items = @_;
return sub { shift @items };
my $normalize_targets = sub {
my $targets = shift;
my $targets_type = ref $targets;
- return $targets_type eq 'ARRAY' ? $targets
- : $targets_type eq 'HASH' ? [ map { +{$_=>$targets->{$_}} } keys %$targets ]
+ return $targets_type eq 'ARRAY' ? $targets : do {
+ $targets_type eq 'HASH' ? [ map { +{$_=>$targets->{$_}} } keys %$targets ]
: die "targets data structure ". ref($targets). " not understood";
+ }
};
my $replace_from_hash_or_object = sub {
my $type = ref $target;
$type ? ($type eq 'HASH' ? do {
my ($match, $value) = %$target;
- ref $value eq 'CODE' ?
- ($match, $value->($datum, $idx, $_))
- : ($match, $replace_from_hash_or_object->($datum, $value));
+ ($match, ref($value) eq 'CODE' ?
+ $value->($datum, $idx, $_)
+ : $replace_from_hash_or_object->($datum, $value))
} : die "What?")
: do {
ref($datum) eq 'ARRAY' ?