#! perl -slw use strict; my @AoA = ( [ '1', '2', '10' ], [ '3', '4', '5' ], [ '6', '8', '11' ], [ '0', '7', '9' ], ); my @A = qw(0 0 0 0 1 2 0 0 1 0 1 0); my( $i, $j ) = ( 0, 0 ); $j++ < $#{ $AoA[ $i ] } or $i++, $j=0 while $i < @AoA and not $A[ $AoA[$i][$j] ]; ## Updated per [ysth]'s observation below print $i == @AoA ? 'not found' : "i:$i j:$j"; __END__ C:\test>junk i:0 j:2