@array = ( [5,7,2],[9,4,8],[1,6,3]); after sort results= ( [1,2,3],[4,5,6],[7,8,9] ); #### #!/usr/bin/perl use Data::Dumper; $sample= [ [5,7,2], [9,4,8], [1,6,3]]; $idx = $#$sample; for ($row=0; $row <= $idx; $row++) { if ( $#{$sample->[$row]} != $idx) {die "not a square table\n";} else { push @unsorted, @{$sample->[$row]};} } @sorted = sort { $a <=> $b } @unsorted; for ($row=0; $row <= $idx; $row++) { my $count = 0; while ($count <= $idx) { $sample->[$row][$count] = shift @sorted; $count++; } } print Dumper($sample);