in reply to What book would be valuable to someone self-taught?
I started with James Lee's Beginning Perl Second Edition. I have taken several programming classes (Basic, C++, Java) and was never fully able to grasp programming. I understood a lot of the concepts, but I was never able to actually write any meaningful code. After getting half way through Beginning Perl, everything just clicked. I'm also casually flipping through Learning Perl and I have Intermediate Perl sitting at home, waiting to be read.
My method of study was to read each chapter thoroughly, write out each of the examples in the chapter, do the exercises at the end of the chapter, and then play around with the code I just wrote to see how it would be affected.
I'm still only a little over half way through the book, but I've been writing more advanced code (at least for me) to reinforce what I've read.
For me, the best way to learn was to read enough to get the basic understanding of what the language can do, and then come up with a project to work on that's more interesting than the examples in the book. For example, I'm currently working on the fifth revision of a password script that generates various types of random passwords based on the user's criteria. The passwords are also verified to meet generally accepted security criteria; length, complexity, repetition of characters, etc. My next project is to create a program that will search pcap files for data that's stored in the reserved space of the header to signal possibly use of steganography.
When it comes to buying a book, taking advice is helpful, but I've found it better to just hit up your local bookstore and flip through a couple of the books on the topic and see which one you like. Pick a book or two, go home and spend some time reading it and working through the examples, but then, start working on something a little more meaningful to you than just outputting text to a command line or a file. When you actually care about the project you're working on, you're less likely to lose interest in it. And when you get stuck on something, post it here, you'll get plenty of answers which will help you get passed the problem that you're having.