I see your point, though your example is lacking.
Yes, $s+++ is a syntax error. However, the previous statement should be completely resolved before the syntax error is encountered. my $s = shift . '!'; is a complete statement.
In my example, the syntax error causes the warning, even though the warning is bogus. Thereafter any statement using that variable also causes a warning. There seems to be some queue for warnings and error messages, and no particular priority.
-QM
--
Quantum Mechanics: The dreams stuff is made of