I work with a lot of different languages, and I tend to confuse syntax. It's a real pain to have to wade through verbose tutorials to figure out that you define functions in Perl with "sub". The Basics are my attempt at a handy reference guide.
I tend to type these pretty fast, so I'm sure I have typos all over the place. Please let me know if you find a typo.
Using Command-Line Basics, you can search the basics from the command line by writing something like:
basics image perl
basics classes
Download the command line tool here.
Three essential steps to learning something new:
This step is to get your foot in the door. Your brain forgets most of what it learns. There's a good chance it will forget the latest algorithm or scripting language you learned — unless you practice. If it's an algorithm, spend at least a day with it. If it's a language, spend at least two weeks. Write 50-100 trivial scripts, at least two non-trivial programs, and then you can step away from the language with more than a cursory understanding.
You have your foot in the door, now it's time to solidify your understanding. You think you know the language, but there's a massive conspiracy to fool you (and you're part of it).
Most likely, you're using an editor that does a lot of the work for you — probably an IDE that generates a lot of base code. At the least you're using an editor with code hints. And if you've written something semi-complicated once (maybe some Tie implementation in Perl), you're probably going to copy-and-paste instead of typing it all over again. It seems like you know the language, but you might not. The iron test is to write a program on a sheet of paper. It's surprising how many programmers can't write a simple class definition on a whiteboard. Get into the habit of writing in a spartan environment — just pencil and paper — and you'll start learning the intricacies of the subject.
The concepts are solid, now you can focus on the clarity of your logic. Think your solution through before you start implementing it. The tendency for programmers is to think the solution through as they write it. This leads to a lot of debugging statements like 'print "$a <------>"' and leads to some pretty hacky code. Think the solution through. Invest in a whiteboard.