in reply to Re: Useless unless
in thread Useless unless

You may as well use the standard if/else and avoid a temporary.
No temporary variable, and no if/else, replacing
EXPR1 if $x; EXPR2 unless $x;
can be done as:
((sub {EXPR1}, sub {EXPR2})[!!$x || 0])->();
except that EXPR1 and EXPR2 in the latter have their own scopes - but you have that with an if/else construct as well.

If EXPR1 and EXPR2 are function calls using the same arguments, as in:

foo($arg, @args) if $x; bar($arg, @args) unless $x;
one could write:
((\&foo, \&bar)[!!$x || 0])->($arg, @args)