The syntax was taking care of things such as $1
If you don't believe me, go check it out
This was the patch I proposed (I'm now waiting for some feedback):
< syn match perlVarPlain "$[\\\"\[\]'&`+*.,;=%~!?@$(0-9-]"
> syn match perlVarPlain "$[0-9]\+"
> syn match perlVarPlain "$[\\\"\[\]'&`+*.,;=%~!?@$(-]"
To tell the truth, I don't even know if it has already been taken care of,
but the "most recent version" of the file seems to be unavailable
Anyway, I mailed the maintainer of the file, so it should be corrected
soon (provided it still has to)...