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


in reply to Perlish way of doing this

It would probably help if you explained *what* the program is trying to do. Of course we can all use our copious free time to analyse it and discover that your program just blorfurgates the quadruggles, but it would be a lot easier if you had explained it.

There is more than one way to do it - especially in perl!

Replies are listed 'Best First'.
Re^2: Perlish way of doing this
by htoug (Deacon) on Dec 08, 2004 at 12:53 UTC
    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.