There's a line missing from Test::More::_deep_check(). It results in funny diagnostics after comparing scalar refs, so
perl -MTest::More=no_plan -e 'is_deeply([(\"a") x 5, "b"], [(\"a") x 5, "c"])' gives # Structures begin differing at: # $got->[0][1][2][3][4][5] = 'b' # $expected->[0][1][2][3][4][5] = 'c' instead of # Structures begin differing at: # $got->[5] = 'b' # $expected->[5] = 'c' attached patch fixes it, F -- Do you need someone with lots of Unix sysadmin and/or lots of OO software development experience? Go on, giz a job. My CV - http://www.fergaldaly.com/cv.html
--- ./lib/Test/More.pm.ref 2003-02-27 17:08:09.000000000 +0000 +++ ./lib/Test/More.pm 2003-02-27 20:54:34.000000000 +0000 @@ -1061,6 +1061,7 @@ { push @Data_Stack, { type => 'REF', vals => [$e1, $e2] }; $ok = _deep_check($$e1, $$e2); + pop @Data_Stack if $ok; } else { push @Data_Stack, { vals => [$e1, $e2] };