Why not just get into the habit of using $XX{"+c"} = 3; or $XX{'+c'} = 3;?
Edited: I know this does not answer your question, but I am really wondering what advantage you get by using barewords that is worth putting special logic in your code to stop people from for instance using a +c as the key.