When syntax coloring is turned on, vim will (on my system, at least) flag invalid syntax with white text on a red background. OTOH, your example isn't what I would call a syntax error. By misspelling the variable name ($namw) in the second line, the third line appears to use an undeclared variable, which vim won't catch.

The OP means automatically running perl -c on the current file in the background to display compile time errors "on the fly". Syntax errors are only a subset of possible compile time problems, like missing modules.

This way warnings and fatals are found an external highlighter would never notice.

When flymake mode is active, any of the 3 conditions stated above will cause flymake to try to syntax check the current buffer. Flymake first determines whether it is able to do syntax check. It then saves a copy of the buffer in a temporary file in the buffer's directory (or in the system temp directory -- for java files), creates a syntax check command and launches a process with this command. The output is parsed using known error message patterns, and error information (file name, line number, type and text) is saved. After the process has finished, flymake highlights erroneous lines in the buffer using the accumulated error information.

When putting a smiley right before a closing parenthesis, do you:

Use two parentheses: (Like this: :) )
Use one parenthesis: (Like this: :)
Reverse direction of the smiley: (Like this: (: )
Use angle/square brackets instead of parentheses
Use C-style commenting to set the smiley off from the closing parenthesis
Make the smiley a dunce: (:>
I disapprove of emoticons
Other