Let me preface this post by directing your attention to the title: "What does it take to LEARN Perl". In my mind this is different than "What does it take to become a good Perl programmer". So with that out of the way...

I'm a new programmer and Perl is my first attempt at learning a language. I've been studying Perl for the past 4 months and I'd like to share what I think it takes to learn Perl (or any programming language for that matter). This post is geared mostly toward new programmers who may be wondering if programming is for them but I'd also like to hear the thoughts of more seasoned programmers on this topic.

I think there are a few crucial requirements needed to learn programming. Here they are, in no particular order:

High Literacy Skills
Being able to read at a 12th grade level or above is extremely important for two reasons. First, it gives you a strong foundation for learning the technical vocabulary (jargon) behind all programming languages. Knowing this jargon allows you to more efficiently think about the structure of the code. And once you learn the vocabulary, you will get a lot more from the documentation and books about Perl. Second, excellent literacy skills means that your mind is good at giving meaning to symbols and maniuplating them. This is all programming is, after all.

Unless you are extremely gifted, you will not understand everything right off the bat and you shouldn't expect to. What's required is that you persist and not let yourself get frustrated. There are some concepts/syntax in Perl that you may not even understand after 4 or 5 attempts. You need to be willing to look at piece of documentation or code over and over. I've read particulary difficult sections in books/documentation for hours. I also often learn by going to many different sources, each with their own unique perspective on a topic, before finally putting the whole thing together. You may feel like you are making no progress; but programming is a lot like climbing a mountain which is done inch by inch, toehold by toehold. Keep lookin' up! Eventually you will get there.

Know the basics of how computers work and have a comfort level with them
This probably goes without saying. Know what a microprocessor is, what memory is, how data gets stored, bytes, bits, hex, ascii code etc. This is stuff you could learn in any good basic computing course.

Natural curiousity about programming
If you don't look at the applications on your computer or a web site like PerlMonks and ask yourself "Damn! How did they do that?" you are probably not going to learn programming. This is what provides the motivation to actually sit down and spend oodles of...

learning how to program. If you are working 50 hours a week and running a household, it's going to be very difficult for you to learn programming. I quit my job to take a year and half off to learn programming and I'm still a little worried this may not be enough time to get all the skills I want to get under my belt.

So I would say the above is the 5 crucial ingredients needed to learn Perl. If you have each of them to at least some good degree, there is absolutely nothing stopping you. As far as becoming a good Perl programmer, enough of that has been written already here on PerlMonks and I'll continue to leave that discussion to the real pros.

Good luck!

$PM = "Perl Monk's";
$MCF = "Most Clueless Friar";
$nysus = $PM . $MCF;