I've found that silly mistakes almost never leave me, unless I change my habits to make the mistakes obvious as soon as I type them.
For example, I would constantly forget which variables were references to a data structure and which were actually hashes or arrays or whatnot. Was active_user_list the name of an array or a reference to an array? I'd assume the wrong answer often and cause myself grief, so now I append "ref" to the end of my reference names.
Conway's Best Practices book is chock full of ideas for coding in a way to avoid silly mistakes despite yourself, by the by. I think some of the suggestions in there I've adopted have helped a lot.