note
Paladin
As you can see below, the <c>=</c> binds tighter than the <c>and</c>, so your second example is parsing as:
<code>
(my($yes2)=defined $bad) and -f $bad;
</code>
Deparse:
<code>
[~]$ perl -MO=Deparse -e 'my($yes2) = defined $bad and -f $bad;'
-f $bad if my($yes2) = defined $bad;
-e syntax OK
</code>
1191992
1191992