perlquestion
ngomong
I'm looking for a way to join multiple arrays, but in a way that attempts to preserve the order of the elements. Here's what I mean:
<code>
my @array1 = (1, 3, 4, 6);
my @array2 = (1, 2, 4, 6);
my @array3 = (1, 2, 3, 5);
my %seen;
my @union = grep { not $seen{$_}++ } (@array1, @array2);
undef %seen;
@union = grep { not $seen{$_}++ } (@union, @array3);
print join(' ', @union);
</code>
The output from this script is:<br>
1 3 4 6 2 5
<br><br>
But, as you can see from my original arrays, 2 should come before 3, and 4 should come after 2.
Is there a way to intelligently attempt to preserve the proper order of the elements? There will, of course, be data sets that can't be preserved, eg/
<code>
@array1 = (1, 2, 3, 4);
@array2 = (1, 3, 2, 4);
</code>
... but the code should handle this gracefully and just choose one over the other.
<br><br>
Any ideas?
<br><br>
Thanks!<br>
clay.