Ahhh, now I see. Ie after you updated the question.
I think that it could be simplified by noting that the two tmp-arrays can be created given only one of the input arrays - @tmp1 depends only on @a1 and @tmp2 only on @a2.
Your loop could be shortened to something like: for my $elem (sort keys %a) {
push @tmp1, (grep($elem eq $_} @a1) ? $elem : "##";
push @tmp2, (grep($elem eq $_} @a2) ? $elem : "##";
}
That satisfies your explanation.
But your code seems to indicate that the value is put into the tmp-arrays also if the value is present in neither the @a1 or @a2. Unfortunately your code does not have an example of this, so it cannot be tested. |