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.
Re: On the fly syntax checkers in emacs, ultraedit or vi
Replies are listed 'Best First'.
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.