sub diff_gates ( $ $ $ ) { my ( $path, $g1, $g2 ) = @_; my %all_keys = ( %$g1, %$g2 ); foreach my $key ( sort keys %all_keys ) { if ( ! exists $g2->{$key} ) { print "$path: g2 missing $key\n"; } elsif ( ! exists $g1->{$key} ) { print "$path: g1 missing $key\n"; } elsif ( $g1->{$key} ne $g2->{$key} ) { print "$path: $key diff between g1 and g2\n"; } } }