http://www.perlmonks.org?node_id=413185


in reply to Re: Perlish way of doing this
in thread Perlish way of doing this

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.