perlquestion
thezip
<p>G'day monks!</p>
<p>I have two arrays of array refs. Each of these has a "date" column, but the columnar position is not the same for both arrays.</p>
<p>There is another field that identifies which array is currently being looked at, and hence can indicate the position of the date column.</p>
<p>What sorting strategy can I use to interleave the two arrays, sorting by the applicable date ?</p>
<c>
#! perl
use strict;
use warnings;
use JSON;
my $json = JSON->new();
my $ary1 = [
[ 1,1,1,1,1,'2018-03-01', 'src1', 1,1,1,1 ],
[ 1,1,1,1,1,'2018-02-15', 'src1', 1,1,1,1 ],
[ 1,1,1,1,1,'2018-04-11', 'src1', 1,1,1,1 ],
[ 1,1,1,1,1,'2018-03-11', 'src1', 1,1,1,1 ],
];
my $ary2 = [
[ 2,2,2,2,'2018-03-02', 2, 'src2', 2,2,2,2 ],
[ 2,2,2,2,'2018-01-25', 2, 'src2', 2,2,2,2 ],
[ 2,2,2,2,'2018-04-22', 2, 'src2', 2,2,2,2 ],
[ 2,2,2,2,'2018-03-22', 2, 'src2', 2,2,2,2 ],
];
sub by_dates {
# What should this sort routine look like so
# that both arrays are interleaved, sorting
# by the applicable date column?
}
my @combined = (@$ary1, @$ary2);
my @sorted = sort by_dates @combined;
print $json->encode(\@sorted);
</c>
<!-- Node text goes above. Div tags should contain sig only -->
<div class="pmsig"><div class="pmsig-212789">
<br>
<i>*My* tenacity goes to eleven...</i>
</div></div>