in reply to Array looping

G'day Nansh,

That looks like you're overthinking the solution. I suspect you just need:

my $count = scalar grep { $array1ref->[$_] eq $array2ref->[$_] } 0 .. +$#$array1ref;

Your example arrays have 11 elements each. With your nested foreach loops, that's 121 (11x11) comparisons; with the single iteration grep solution, that's only 11 comparisons. Given your example data looks like DNA sequences, your real data is likely to be many orders of magnitude larger: consider 10,000 vs. 100,000,000 comparisons.

While that specific line possibly solves your current issue, it's a general technique I suggest you add to your toolbox, for future reuse in similar situations, quite possibly with different types of data and different comparisons. Here's a command line example comparing two arrays of numbers:

$ perl -E 'my ($a1, $a2) = ([1,2,3],[1,3,3]); say scalar grep {$a1->[$ +_] == $a2->[$_]} 0..$#$a1' 2

— Ken