On Wed, Jun 30, 2004 at 09:59:15AM -0400, Geoffrey Young wrote:
> I found some stuff about is_deeply() and stringified references, but it
> doesn't look to me to be the same thing.  the problem I am describing is the
> difference specifically between an empty string and undef.
> 
>   is_deeply([''],[undef]);
> 
> improperly says that the two arrays are equal.
> 
>   is_deeply(['foo'],[undef]);
> 
> behaves as expected.
> 
> am I missing something is the discussion?

Actually, it seems that some of the patches were applied. The problem is
that is_deeply() delegates to ->is_eq() for non deep arguments but handles
it's own string comparison once you descend into the structure. The patch
below seems to fix it,

F


--- More.pm.orig        2004-06-30 15:15:24.182762112 +0100
+++ More.pm     2004-06-30 15:16:36.330793944 +0100
@@ -1035,7 +1035,9 @@
         # Quiet uninitialized value warnings when comparing undefs.
         local $^W = 0; 
 
-        if( ! (ref $e1 xor ref $e2) and $e1 eq $e2 ) {
+        if( ! (ref $e1 xor ref $e2) and 
+            ! (defined $e1 xor defined $2) and
+            $e1 eq $e2 ) {
             $ok = 1;
         }
         else {

Reply via email to