sub f { my ($h) = @_; grep { !exists($h->{$_}->{O}) || (defined($h->{$_}->{O})? (defined($h->{$_}->{C})? ($h->{$_}->{O} ne $h->{$_}->{C}) : 1) : defined($h->{$_}->{C})) } keys %$h }