use strict;
use warnings;
use Data::Dumper;
use List::Util qw(reduce);
my @x = (1, 3, 2);
my @y = (11, 13, 12);
my @z = (21, 23, 22);
my @combined = map { [ $x[$_], $y[$_], $z[$_] ] } 0 .. $#x;
my @sorted = sort { $a->[0] <=> $b->[0] } @combined;
my $split_ref = reduce { push @{$a->[$_]}, $b->[$_] for 0 .. $#$a; $a;} [[], [], []], @sorted;
print Dumper \@combined;
print Dumper \@sorted;
print Dumper $split_ref;
Which essentially will give you:
[
[
1,
2,
3
],
[
11,
12,
13
],
[
21,
22,
23
]
];
source
share