my @matrix=([qw(1 2 4 4)],[qw(5 2 0 8)],[qw(9 10 11 12)],); my @t; for my $i (0..$#{$matrix[0]}) { for my $j (0..$#matrix) { last if $matrix[$j][$i] == 0; $t[$i][$j] = $matrix[$j][$i]; } }