use strict; my $arrayVar; $arrayVar->{"0,0"} = "a"; $arrayVar->{"1,0"} = "a"; $arrayVar->{"2,0"} = "a"; $arrayVar->{"3,0"} = "a"; $arrayVar->{"4,0"} = "a"; $arrayVar->{"0,1"} = "3"; $arrayVar->{"1,1"} = "2"; $arrayVar->{"2,1"} = "2"; $arrayVar->{"3,1"} = "3"; $arrayVar->{"4,1"} = "3"; $arrayVar->{"0,2"} = "aaa"; $arrayVar->{"1,2"} = "bbb"; $arrayVar->{"2,2"} = "aaa"; $arrayVar->{"3,2"} = "bbb"; $arrayVar->{"4,2"} = "bbb"; my @data; # $arrayVar umwandeln in 2-dim. Array: for (keys %$arrayVar) {    my ($y, $x) = split /,/;    $data[$y][$x] = $arrayVar->{$_}; } # Array sortieren nach $spalte: my @sorteddata = sort { $a->[0] cmp $b->[0] || $a->[1] <=> $b->[1] ||$a->[2] cmp $b->[2] } @data; # $arrayVar neu aufbauen mit @sorteddata: $arrayVar = {}; for my $y (0 .. $#sorteddata) {    for my $x (0 .. $#{$sorteddata[$y]}) {        $arrayVar->{"$y,$x"} = $sorteddata[$y][$x];    } } # testen: use Data::Dumper; print Dumper \@sorteddata;