use strict; use warnings; use Data::Dumper; my @x = (0, 18, 36, 0, 18, 36, 0, 18, 36, 0, 18, 36, 0, 18, 36, 0, 18, 36); my @y = (0, 0, 0, 18, 18, 18, 36, 36, 36, 0, 0, 0, 18, 18, 18, 36, 36, 36); my @z = (25, 25, 25, 25, 25, 25, 25, 25, 25, 20, 20, 20, 20, 20, 20, 20, 20, 20); my @sorted = sort { $a->[2] <=> $b->[2] or $a->[1] <=> $b->[1] or $a->[0] <=> $b->[0] } map { [ $x[$_], $y[$_], $z[$_] ] } 0 .. $#x; @x = @y = @z = (); foreach (@sorted) { push @x, $_->[0]; push @y, $_->[1]; push @z, $_->[2]; } print "@x\n@y\n@z\n";