I dislike overgeneralizations like this, personally. The following code is perfectly clear:

do_something() unless $big_honkin_error;

I'm not saying that you can't avoid unless and make the code still clear, of course:

do_something() if not $big_honkin_error:

but the unless version is just fine.

I wouldn't use unless at the beginning of a condition, however. But that's related to putting the important parts at the beginning of the statement as per perlstyle recommendations. Specifically:

Just because you *CAN* do something a particular way doesn't mean that you *SHOULD* do it that way. Perl is designed to give you several ways to do anything, so consider picking the most readable one. For instance

PrivoxyWindowOpen(FOO,$foo) || die "Can't open $foo: $!";

is better than

die "Can't open $foo: $!" unless open(FOO,$foo);

because the second way hides the main point of the statement in a modifier.