in reply to Re^2: Short form (ternary) if else
in thread Short form (ternary) if else

No, it doesn't have to be used in conjunction with assignment. Consider:

printf("X is %s\n", defined $X ? $X : 'undefined');

Or:

sub get_name { # ... return wantarray ? ($firstname, $middlename, $lastname) : "$firstname $lastname"; }