I am a Perl programmer and a new emacs user. I'm on Windows, using cperl-mode to edit perl. Emacs version is 24.2.1. Here is a screenshot with sample code:

(source: breqwas.net )
- Obvious mistake: it highlights arrays, hashes, and literal values without quotes in (a => "b") stylelists inside comments
- Another mistake: it selects the first word in the regular expression as an array due to the non-standard quote character
- Not a mistake, but it looks weird: it highlights arrays and hashes at any time when they are used (even in comments, yes), but scalars are highlighted only when declared
- Not a mistake, but it looks strange: the same story with functions: it is highlighted when declaring, and not when calling
- Not a mistake, but it looks strange: why do "print", "say" and "system" have different colors?
I could go on, but I hope this explains the word "broken" pretty well.
Then I studied the magic key combination Cu Cx =, which shows, among other things, the text properties for the text under the cursor, hoping to create a better own coloring scheme. At that moment, it began to make even less sense.
"print" has a cperl-nonoverridable-face. "die" has a font-lock-keyword-face. Meanwhile, both are functions and can be (and often) redefined. "system" has font-lock-type-face. Why? Function declarations have font-lock-function-name-face - this is normal, but the same as use arguments. Why? Function calls and scalars have no face properties at all and cannot be allocated. Why? And so on. And again, I could go on.
Is there any way to fix all this? Is there any configuration in which I can reassign lexical units to some other font faces or in some other way make the syntax highlighting less crazy?
To avoid the “perl is unparsible” conversation, here is a screenshot of the editor I'm switching from with the same code: http://breqwas.net/dropbox/perlsyn_pn.png . It looks much smarter.
Upd: So far (3 weeks after I asked this question here), I have not found a cure. All Perl programmers who use emacs, I know, simply ignore these problems. Emacs doesn't seem to have better perl highlights. Reading documents in cperl mode gives some explanations (choosing faces for different elements now seems less crazy), but gives no answers. I wrote an email to the cperl-mode maintainer with these questions and some other digging, but didn't get an answer.
Yes, you understood correctly: it seems that the emacs community has not been able to make good perl syntax highlighting in the 25 years that perl is. It is a sad story.