##
@hash{ map $array[$_], grep !($_ & 1), 0 .. $#array } = map $array[$_], grep $_ & 1, 0 .. $#array;
##
##
sub merge_hash {
my ($hash, $array) = @_;
@$hash{ map $array->[$_], grep !($_ & 1), 0 .. $#{$array} } = map $array->[$_], grep $_ & 1, 0 .. $#{$array};
}
##
##
sub merge_hash (\%\@) {
## rest unchanged
}