#!/usr/bin/perl -w use strict; use warnings; # use diagnostics; use Data::Compare; use Test::More tests => 3; my $warning= ''; $SIG{__WARN__} = sub { $warning= shift; }; my($data1, $data2) = ({}, {}); foreach my $i (qw(a b c d e f g h i j)) { foreach my $j (qw(k l m n o p q r s t)) { $data1->{$i}->{$j} = 'i like pie'; $data2->{$i}->{$j} = 'i like pie'; } } # check that we DTRT on very deep recursion $a = [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]; $b = [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]; Compare($a, $b); ok($warning, "warn on deep recursion"); $warning = ''; Compare([5], [5]) foreach(1..1000); ok(!$warning, "recursion counter correctly reset"); Compare($data1, $data2); ok(!$warning, "no warnings emitted on large flat structures");