in reply to Learning the Deeper Secrets of Perl
The best way to learn anything is to have a reason to learn it. If you don't work as a programmer, then you may want to pursue some projects of your own (and that may mean contributing to existing Open Source projects, or starting your own).
If you do work as a programmer (and it doesn't have to be in Perl), then make sure you're in an environment where you're going to be upskilled - not necessarily because your work sends you on 2 day training courses, but because the job is challenging, and there are other people to learn from.
In general, working on code with other people (especially if the code is complex enough, and the other people know more than you) is the best way to increase your skills. There's only so much you can learn from a book. I consider books good for foundation, but until you really have to use them for something, you won't understand the concepts deeply.