in reply to Re^2: Control loop 2D array
in thread Control loop 2D array

Not very satisfying because of the need to use a 'goto' to quit the loops early, and the need to duplicate the index vars because Perl localises them to loop even if they are pre-existing vars.

I tried suggesting that the latter behaviour was a bug a while ago and got shouted down.

#! perl -slw use strict; my @AoA = ( [ '1', '2', '11' ], [ '3', '3', '6' ], [ '6', '8', '11' ], [ '0', '7', '9' ], ); my @A = qw(0 0 0 0 1 2 0 0 1 0 1 0); my( $p, $q ); OUTER: for my $i ( 0 .. $#AoA ) { for my $j ( 0 .. $#{ $AoA[ $i ] } ) { ( $p, $q ) = ( $i, $j ) and last OUTER if $A[ $AoA[ $i ][ $j ] ]; } } print "i:$p j:$q";

I'm not sure why you are using the outer loop below?


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."

Replies are listed 'Best First'.
Re^4: Control loop 2D array
by ysth (Canon) on Jun 17, 2007 at 16:54 UTC
    I'm not sure why you are using the outer loop below?
    A different interpretation of "the first occurence to in the second array is not zero"; mine prints 1 1. No idea which interpretation (if either) is actually what is wanted.

    I like that your new version reports undefs instead of (@AoA, 0) if there is no match.