这是我的情景,其中有两个哈希值已从两个JSON文件中解码出来。
我有两个复杂的哈希值,
我想比较这两个哈希是否相等,并使用Data::Compare的Compare和Test::More的is_deeply。但是,两者都不会忽略数组的顺序。 我想要比较键“k21”的数组值时忽略其顺序。 我的应用程序从“keys%hash”中填充数组,该方法会随机排序。 尝试使用Data::Compare的“ignore_hash_keys”,但我的哈希有时可能很复杂,不想忽略它们。 键“k21”有时也可能有哈希数组。
我有两个复杂的哈希值,
$hash1 = {k1=> { k11 => v1, k12 => v2}, k2 => { k21 => [v1, v2, v3] }}
$hash2 = {k1=> { k11 => v1, k12 => v2}, k2 => { k21 => [v3, v2, v1] }}
我想比较这两个哈希是否相等,并使用Data::Compare的Compare和Test::More的is_deeply。但是,两者都不会忽略数组的顺序。 我想要比较键“k21”的数组值时忽略其顺序。 我的应用程序从“keys%hash”中填充数组,该方法会随机排序。 尝试使用Data::Compare的“ignore_hash_keys”,但我的哈希有时可能很复杂,不想忽略它们。 键“k21”有时也可能有哈希数组。
$hash3 = {k1=> { k11 => v1}, k2 => { k21 => [{v3 => v31}, {v2 => v22}] }}
如何忽略数组顺序比较复杂的哈希值。
my $arr_of_h1 = {'a' => [1, 2 , 3], b => [{2 => 1}, {1 => 1}, {3 => 1}]};
my $arr_of_h2 = {'a' => [1, 2 , 3], b => [{2 => 1}, {3 => 1}, {1 => 1}]};
cmp_deeply($arr_of_h1->{b}, bag(@{$arr_of_h2->{b}}),"Array are equal");
以上语句可以工作,但想要以下语句通过执行bag比较而工作。
cmp_deeply($arr_of_h1, $arr_of_h2,"Hash are equal");
- Girish