in reply to how to compare the rows in a 2d array

(If I'm understanding you correctly — not exactly sure what you mean by "sets"...)

#!/usr/bin/perl my @arr = (["a","b","c"], ["a","b","d"]); my ($r1, $r2) = @arr; my ($m1, $m2); for my $i (0..$#$r1) { if ($m1 and $m2) { print "$m2\n$m1\n$r1->[$i],$r2->[$i]\n"; } $m2 = $m1; $m1 = $r1->[$i] eq $r2->[$i] ? $r1->[$i] : undef; } __END__ a b c,d

This keeps track of the previous two comparisons, and prints them plus the current/next one if both previous ones match.

I chose this implementation because I wasn't quite sure if your rows might potentially hold more than 3 elements, and the two consecutive equal ones could occur at any position. IOW, the approach would work, too, for input such as

(["a","c","a","b","c",...], ["a","d","a","b","d",...])