$a = [[[1,2],[2,3]], [[3,4],[4,5]], [[4,5],[5,6]]]; $b = [[[1,2],[2,3]], [[3,4],[4,5]], [[4,5],[5,6]]]; print is_array_equal($a, $b); sub is_array_equal { my ($array1, $array2) = @_; if ($#array1 != $#array2) { return 0; } else { print "here\n"; for (my $i = 0; $i <= $#{$array1}; $i ++) { print "there\n"; if ((ref($array1->[$i]) eq "ARRAY") && (ref($array2->[$i]) eq "ARRAY")) { if (!is_array_equal($array1->[$i], $array2->[$i])) { return 0; } } elsif (!ref($array1->[$i]) && !ref($array2->[$i])) { print "compare $array1->[$i] and $array2->[$i]\n"; if ($array1->[$i] != $array2->[$i]) { return 0; } } else { return 0; } } } return 1; }