An overly complex conditional is an overly complex conditional regardless of whether it appears as part of an if statement or an unless statement.
I think I should've formulated the question in other words: "Quick, when will we enter into the block?".
- if ($bar !~ /bar/ and ($baz =~ /qux/ or not defined $undef)): If this doesn't match that, and at least one of the other conditions.
- unless ($bar =~ /bar/ or ($baz !~ /qux/ and defined $undef)): Err, well... applying DeMorgan... err... when there's no match... and...
Or, put it yet another way: if we know the values of $bar, $baz, and $undef, is it easier to walk the if or the unless conditional?