in reply to Unusual sorting requirement

There is another field that identifies which array is currently being looked at, and hence can indicate the position of the date column.

Which column is that? I'm going to take a guess it's src1/src2. Also, I'm assuming string comparisons for the dates are ok, which should hold true if all the dates are formatted as you showed. I hope this is what you're looking for?

<update> I should have mentioned right off the bat that this is not the most efficient solution, and a Schwartzian transform, like LanX said and tybalt89 showed, helps in that regard. </update>

use warnings; use strict; use Data::Dump; 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 ], ]; my @sorted = sort { $$a[$$a[6] eq 'src1' ?5:4] cmp $$b[$$b[6] eq 'src1' ?5:4] } (@$ary1, @$ary2); dd @sorted; __END__ ( [2, 2, 2, 2, "2018-01-25", 2, "src2", 2, 2, 2, 2], [1, 1, 1, 1, 1, "2018-02-15", "src1", 1, 1, 1, 1], [1, 1, 1, 1, 1, "2018-03-01", "src1", 1, 1, 1, 1], [2, 2, 2, 2, "2018-03-02", 2, "src2", 2, 2, 2, 2], [1, 1, 1, 1, 1, "2018-03-11", "src1", 1, 1, 1, 1], [2, 2, 2, 2, "2018-03-22", 2, "src2", 2, 2, 2, 2], [1, 1, 1, 1, 1, "2018-04-11", "src1", 1, 1, 1, 1], [2, 2, 2, 2, "2018-04-22", 2, "src2", 2, 2, 2, 2], )

Replies are listed 'Best First'.
Re^2: Unusual sorting requirement
by thezip (Vicar) on Sep 12, 2018 at 21:38 UTC

    That works for me -- thx!


    *My* tenacity goes to eleven...