Currently, throwing is_deeply() a code ref causes it to barf. perl -MTest::More -wle 'print is_deeply sub {}, sub {}' WHOA! No type in _deep_check This should never happen! Please contact the author immediately! # Looks like your test died before it could output anything.
is_deeply() doesn't know what to do with code refs. What should it do? What it *shouldn't* do is what Test.pm does, namely execute the code ref and compare the values returned. It would just compare the refernces. This much is obvious, this should pass: is_deeply \&foo, \&foo; The same code ref is being compared. But here's the tricky part. is_deeply sub { 42 }, sub { 42 }; Does that pass? ie. Are we just comparing the reference value or should is_deeply() decompile the subroutine and see if they contain the same code? (Technical considerations aside, for the moment). Given that is_deeply() considers these to be equivalent: is_deeply [ 42 ], [ 42 ]; I think comparing the decompiled source code is consistent, but is it useful? Anyone have use cases for this? -- Michael G Schwern [EMAIL PROTECTED] http://www.pobox.com/~schwern Don't try the paranormal until you know what's normal. -- "Lords and Ladies" by Terry Prachett