From my experience, the best programmers are almost completely self-taught, so welcome to a difficult, but highly rewarding path. Overall, the best way to learn how to program is to program. I think the choice of Learning Perl is a good one for learning Perl, but, no offence to Merlyn, its not one of the best for learning to program. Of course, I don't believe that was its purpose.
This topic has come up a few times, so rather than repeat myself, check out what I have to say there. I would add one new book to that list. After going through How to Design Programms (it's free online), I'd suggest going through a newer book called Understanding Unix/Linux Programming: A Guide to Theory and Practice. All I could say about this book when reading it was, "Wow!" I learned a lot from it and truly wish I had it when I was much younger.