First, Perl is not an easy language. Perl was not the
first language i learned, nor the
second, or
third, or even the
fourth. Some people are
simply not ready for Perl, and i for
one would never put someone on a motorcycle before they
first learned how to ride a bicycle very well.

You raise some very good points, and i do appreciate
reading such arguments to remind me of why i am here, but
not everyone that comes asking for help should be using
this language right now. It's dangerous without
proper wisdom, and sometimes you have to say "don't touch
that - you will get burned" in a rather scolding tone.

As for those with initiative to learn, they will
stick around without anyone having to extend them an
invitation because they will see the benefit of staying.
I am not saying that we should not extend invitations, i am
simply saying that those who really want to learn realize
that it is up to themselves to put forth the effort,
not us.

More good points. I drew on my own experience, with 15 years of programming in C, to provide the necessary support in learning Perl in the first place. If necessary, I could dig through the code and find out how it works (I always wanted to write my own regexp engine).

Your comparison with riding a motorcycle is particularly apt. I got my first bike in 1978 after having ridden a bicycle for a number of years. I had no idea about how to use a clutch, so took the bike out to a back road where I drove up and down (very carefully!) till I got the feel for it.

After a while I was quite competent at downshifting, braking with brake and engine, checking my mirrors and flicking the turn signal, but to begin with I had to single-task my way through the unfamiliar territory of a motorcycle. Perl can be like that.

I can't imagine trying to learn Perl as a first programming language though. Way too much information and complexity at once, especially if one is trying to do something as complex as CGI programming.

My opinion still stands. I hope and expect to see civility from everyone (not just Anonymous Monks) when they visit this site, just as any of us would expect visitors to their home to behave properly and not break furniture, make fun of our choices of music or drink all the beer.

I can't imagine trying to learn Perl as a first programming language
though. Way too much information and complexity at once, especially
if one is trying to do something as complex as CGI programming.

The very end of that paragraph outlines one of the biggest problems
with people trying to learn Perl as their first language. It isn't
that Perl isn't a reasonable language to learn as the first language
--- it is that many people who do so are attempting to do something
complex like writing CGI applications as they learn. They don't seem
to want to bother working their way up. And Perl makes it seductively
easy to get started. However, soon they are in over their heads --- and it
isn't merely too much syntax or that Perl is way too complex, it is
because they just haven't built up their basic programming skills
over any period of time, nor been taught fundamental concepts such as
variable scope or shown how to tackle and decompose a problem in a
structured fashion ...

Any language would be a horrible first language if people tried to
learn it all at once and without any real instruction in programming
to speak of --- one doesn't learn how to program as a side-effect
of learning a programming language. But that winds up being both the
expectation of many beginners, and the route they try to take.

many people who do so are attempting to do something complex like writing CGI applications as they learn.

CGI applications are excellent introductory projects.

Think about what they can teach you:

Security - validating all incoming data mostly, but depending on the project they could also learn about encryption, server configuration, and many other areas.

Use existing code - writing parameter parsers is boring, tedious work that will more likely than not result in a buggy, insecure end product. Using extensively tested code is a good idea.

Most importantly, programming, and more specifically Perl is fun and has real world applications. If people spend a week writing programs to convert fahrenheit to celsius, they're going to get turned off programming pretty quick.

I see very little wrong with writing CGI scripts as an introduction to Perl. So what if people develop a few bad habits while they're learning? If they stay interested and stick with programming they'll learn to fix them fast enough.

I do feel that even though most people would have difficulty learning Perl right from the start, I think that any person with a rudimentary knowledge of programming wouldn't have too much trouble picking up Perl.

Before I met Perl last summer, I had very little experience. I mucked around with BASIC on a Commodore 64, and did some C programming in seventh grade on an ol' 16Mhz machine running DOS. There was a lapse of six years where I did no programming whatsoever.

My girlfriend has tried Perl, and she hasn't had much luck. It is hard. She has little to no experience in programming, but she knows much about the Web and CGI. When I first started to help her, I taught her to use the Command Prompt. Bad move on my part. Most people (Windows Users) nowadays are very cautious around a Prompt and think it's useless. Microsoft has pushed public opinion away from the text-based interface that most users that started computing in an environment like Windows fear the prompt. She wants to continue learning, so I think she and I will go over the basics of CGI.pm.

I think, however, that we should extend an invitation that seem truly interested. I never asked my girlfriend if she wanted to learn Perl, she asked me. Anonymous Monks should be invited to learn with the rest of the Monestary, and we should point them in the direction of information that suits their interests. In time, their interests may grow into more than just CGI, Tk, or AOL robots. I know mine did. :)