I wonder if anybody else is in the same boat as I. It seems to me that the majority of monks are either experienced or semi-experienced programmers who probably already had a solid understanding of a programming language under their belt before learning Perl.

I have attempted to learn Perl about three times before and then giving up telling myself it is because I don't have any programming experience. Well this time I am determined to learn it because I know it will make my job much easier.

Are there any other Monks out there who never wrote a piece of code before attempting to learn Perl? I am looking for suggestion for the best way to become proficient in Perl. I know it will take time, but I just want to make sure I am heading down the right path.

Are there any books that you would recommend? I pretty much already read all of Learning Perl which is a good start, but not enough meat. I thought I was ready to move on to Programming Perl, but how wrong I was. It is difficult for me to try and grasp the concepts in Programming Perl. I believe it is because I don't have any experience with a programming language.

I feel the same way...I have no experience in programming at all.
Luckily, my mom (a PerlMonk) persuaded me to try learning Perl, and I
am enjoying it!

So to help me get started, my mom bought me Beginning Perl (Simon Cozens)
This book is good for learning the basics and for getting
a clear idea of how to understand Perl and how it works. I've noticed
that a lot of monks have recommended Learning Perl. I hope this one
still helps!

I can't quite grasp all the concepts yet either, but from what I've been
told, it's not something to worry about in the early stage of learning.

As I've said elsewhere, Learning Perl is really
aimed at people who have experience of programming in other
languages.

Elements of Programming with Perl is the book that
I recommend for complete beginners. I've heard good things
about Beginning Perl as well, but I've not read it
yet. I bought a copy in the YAPC::Europe auction so I'm
going to take a closer look at it soon.

And don't worry if you don't get all of the concepts
first time round. Don't forget the we're here to help :)

Thanks davorg and everybody else's comments. They have been really helpfull with some great node links.

I actually just bought Elements of Programming with Perl and I am just waiting for it to arrive. In the meantime, I have been doing the exercises at the end of each chapter in Learning Perl, but I wish Schwartz & Christiansen wouldn't use the term "similar to how it is in C" to explain some of the commands.

I still feel that this site is the best resource because it is like having your own personal mentor of Perl guru's at your fingertips, except they make you work for the answer : ) which is the best way to learn in the long run.

You have the desire to learn Perl, that's a great start! The difficult part of learning any language is keeping
up the desire and motiviation. The best way to learn a language is to gain experience utilizing it.
A good way to start, think of a goal and create a deadline for yourself... and then GO For IT!! :) Granted, you
may fall into some pitfalls or have questions - but that's natural. You'll learn with each problem and question.
As you finish your project, you'll be amazed on how much you've learned - and you accomplish something as well(either
something fun or useful for work).

Since practice for the sake of practice is rather dull,
and not especially rewarding, it is often better to practice
on something you have an interest in. Instead of merely
using book examples or "problems", try and find
some task that you would like to do, and make
a program to solve it. This could be something like
picking lottery numbers, checking your favorite baseball
player's stats,
or finding duplicate files on your hard drive, whatever you
have an interest in.

The idea is to focus on
the problem and not the programming. Subjecting yourself to
dozens of academic examples will not teach you how to solve
problems, which is really what programming is all about.

I would recommend reading Programming Perl's function
section, and familiarize yourself with every function that
there is, though obviously not all at once.
Understanding the tools you can use is very
important, as there is often a single function which can save
you a lot of time compared to writing your own out of
ignorance. You won't understand all of them at first, but
without exposure, you will never understand, so just take
it at a comfortable pace. You must learn the vocabulary
in order to learn the language.

Unlike Learning Perl, which is more of a tutorial,
Programming Perl is more of a reference, which means that
you aren't necessarily expected to read it cover-to-cover
in a direct sense.
It's there for you to pick up when you need help with
something, like how split works, or to find a function
that sorts. It's like a dictionary in that sense.

Although I had taken a class in Pascal, Assembly (sounds scary but we didn't do much), and C, Perl is by far the first language that I came to know well enough that I can claim as a language I can say more they "Hello, world" with.

I asked the same question to others when I was at the stage you are in, and I got the same answer I'd also recommend to you. Find something you want to do with it then, solve learning problems as you come to them.

Also, I would suggest that if you haven't already, do all of the excercises in Learning Perl, check your program with their's, implement what you learn from their's into your own code, then mess with and make it do other things it "doesn't have to."

This might sound like questionable advice, so read at your own risk...

What I like to do when learning something new is start at a very advanced stage, just read through source code, the more advanced books, etc. without really worrying about catching onto any of it. So after you've done this for a week or so you really don't feel like you've learned anything at all but when you go back and pick up a beginners book, you find yourself focusing a lot better. You'll recognize things and know that there are real world applications for each of the examples and you'll remember them far better. Oh yeah, and like everyone else says do the examples, make up problems to solve on your own, and practice, practice, practice. Hanging around here doesn't hurt either :)

my strategy when learning has always been to pick a small project that has to do with what you do and just launch into it ... the first little perl endeavor i undertook was to update the ip address for the e-mail post office at work in the windows registry, then i launched into parsing logs, which led me into database access, etc. each leads you into picking up something new, and you've got the satisfaction of actually getting something done. personally, i'm amazed at the people who can actually read through all of the perldoc pages first, i'm far too impatient for that. i have been know to re-invent the wheel as a result, but what the heck, at least i know i can do it.

Maybe what you should do is get a basis of programming?
This link by tilly has some good suggestions
down that path. Actually, his node has many good pointers
to nodes and outside links about programming in general.

My recommendation is to read all of the perldoc pages, start to finish. Don't worry about understanding any of it! It's language, and just like a spoken language, you need a lot of fodder. If you read encyclopedias, you'll learn a lot, even if you don't remember any of it, or if it doesn't make much sense. Pieces creep out, so if you don't feel comfortable with the language, just keeping dumping more "gah gah gah" in.
--Snazzy tagline here

I have attempted to learn Perl about three times before and then giving up telling myself it is because I don't have any programming experience. Well this time I am determined to learn it because I know it will make my job much easier

well what exactly is your job and how do you feel that Perl will make it easier? if you are a non-programmer, there are many things between full-fledged programming and non-programmatic point-and-click.

Are you certain that you dont need something less than full-fledged programming (ie, spreadsheet, database, expert system)? Are you certain that what needs to be done needs to be done by you? I often try to take matters into my own hands when it would be better to delegate the task to someone with much more experience.

Also, note well, you might just want to take a look at
CPAN, a Perl archive of useful software. What you want done may well likely already exist there. And also read articles on Perl.com and XML.com to see solutions to common problems.

Not to scare you away, but again, what is the role that you feel Perl will fill in your occupational endeavors?

i think there's a danger in categorizing "full-fledged programming" as opposed to smaller tasks. large applications are comprised of a well-conceived integration of smaller modules. if one learns to write smaller modules one is programming, period. there are additional skills involved with integrating components into larger projects, but these architectural issues are themselves meta-programming issues that evolve and change. this is an interative process for anyone who participates in it. someone who writes a complex app may be a master programmer, but someone who maintains an overall system involving disparate apps through the use of glue scripts can be just as much a master programmer.

although i recognize this is an over-simimplification, a dominant model for large-scale software development involves smaller teams writing components that are incorporated into larger-scale constructs. as a person learns to write components, they are learning to program.

My first programming language was perl. Well, I tried learning C before that, but it was really slow to accomplish anything, so I really didn't use it.

When it comes down to it, it doesn't matter how much experience you have before hand. You need to use something in order to gain experience with it.

One thing I notice is that unless I use something I just learned, I'm going to forget it. It is important to find practical uses for perl in order to get good at it initially. For example, write a web application of some sort, like a day timer or an mp3 database. Just do something with perl.

It's kind of like "If your only tool is a hammer, all your problems will look like nails." But until you understand your hammer, all your problems will look like glass beads.