use strict; my $arrayVar; $arrayVar->{"0,0"} = "a"; $arrayVar->{"1,0"} = "a"; $arrayVar->{"2,0"} = "a"; $arrayVar->{"3,0"} = "a"; $arrayVar->{"4,0"} = "b"; $arrayVar->{"0,1"} = "2"; $arrayVar->{"1,1"} = "2"; $arrayVar->{"2,1"} = "3"; $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"; $arrayVar->{"0,3"} = "1"; $arrayVar->{"1,3"} = "2"; $arrayVar->{"2,3"} = "3"; $arrayVar->{"3,3"} = "4"; $arrayVar->{"4,3"} = "5"; my @data; # $arrayVar umwandeln in 2-dim. Array: for (keys %$arrayVar) { my ($y, $x) = split /,/; $data[$y][$x] = $arrayVar->{$_}; } # Array sortieren nach $spalte: my $spalte = 0; # erste Spalte my @sorteddata = sort { $a->[$spalte] cmp $b->[$spalte] } @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;