KeighleHawk has asked for the wisdom of the Perl Monks concerning the following question:

Related (sorta) to my post in case insensitive deep comparison, I switched a test comparison from Test::More->is_deeply() to Test::Deep->cmp_deeply(). I did this because part of the structure I am comparing includes an array of hashes. Naturally, the array can be returned in random order. Initially, I was using a sort on one of the hash fields, but as my data set increased, I started to hit return values with different hash structures so my sorting column needed to change.

However, the Test::Deep->bag() method alleviates the need for this by comparing arrays that can be in random order which was far better (I thought) than trying to sort the arrays in the first place. The problem is the messages returned on a failed test. is_deeply would return the exact key/value pair returned and the one expected. cmp_deeply for the same test returned:

Missing: 1 reference
Extra: 1 reference

Not so helpful. Now, I can deal with this by printing out my own messages on fail using Test::More->diag(), but before I go through my code to add all that, I wanted to make sure I was not missing something obvious, especially since Test::Deep touted it's useful diagnostic messages.

Robert Kuropkat