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], )