diff --git a/lib/NGCP/BulkProcessor/Array.pm b/lib/NGCP/BulkProcessor/Array.pm index 6246987..db4f82a 100644 --- a/lib/NGCP/BulkProcessor/Array.pm +++ b/lib/NGCP/BulkProcessor/Array.pm @@ -264,8 +264,8 @@ sub array_to_map { my $map = {}; my @keys = (); my @values = (); - if (defined $array_ptr and ref $array_ptr eq 'ARRAY') { - if (defined $get_key_code and ref $get_key_code eq 'CODE') { + if (defined $array_ptr and ref $array_ptr eq 'ARRAY' and + defined $get_key_code and ref $get_key_code eq 'CODE') { if (not (defined $get_value_code and ref $get_value_code eq 'CODE')) { $get_value_code = sub { return shift; }; } @@ -275,9 +275,12 @@ sub array_to_map { } foreach my $item (@$array_ptr) { my $key = &$get_key_code($item); - if (defined $key) { + + next unless defined $key; + my $value = &$get_value_code($item); - if (defined $value) { + next unless defined $value; + if (not exists $map->{$key}) { if ($mode eq 'group') { $map->{$key} = [ $value ]; @@ -293,10 +296,7 @@ sub array_to_map { } } push(@values,$value); - } - } } - } } return ($map,\@keys,\@values);