Not to sound like a parrot, :), but the exercises in the llama book have helped me tremendously. Also, Every time you learn a new skill, write a small program, to play with and test that specific skill, i.e., when I learned regular expressions, I wrote this little reg ex tester:
to practice and play around with regular expressions. The same thing for loops, if statements, sub-routines, variables, arrays, hashes, etc. This is a great way to learn, for several reasons,
One, it teaches you the basic skill you're practicing;
Two, you learn basic structure by having to design the little testers;
Three, you learn how to break things into pieces and play with/work with them, which is a skill needed for de-bugging later, more complicated programs;
And four, you can use these little testers you wrote for actually de-bugging your code later. :)
P.S. Umm, the whole "Rockstar Programming" line, should probably be left out, that will only be applicable in the future after I've taken over the world with my software development company, Rockstar Programming ;).