use strict; use warnings; my @my_arr = ( [1, 11, 0, 0], [12, 109, 0, 0], [16, 1, 16, 0], [14, 14, 2, 0], [45, 16, 5, 4], ); my $index = -1; my @diagonal; while (exists $my_arr[$index] && exists $my_arr[$index][$index]) { push @diagonal, $my_arr[$index][$index]; --$index; } print join '-', @diagonal; #### 4-2-1-12