in reply to Surprising Precedence/Context
As you can see below, the = binds tighter than the and, so your second example is parsing as:
Deparse:(my($yes2)=defined $bad) and -f $bad;
[~]$ perl -MO=Deparse -e 'my($yes2) = defined $bad and -f $bad;' -f $bad if my($yes2) = defined $bad; -e syntax OK
In Section
Seekers of Perl Wisdom