This arielsrant brought to you as a community disservice by the E2WDC Advisory Committee for reasoned discourse on technical matters.
So I'm chatting to this new guy about Perl.
"What are you using for learning Perl?" I ask...
"Oh, I've started with this folder here, and when I'm done and have the big picture, I'll continue with Programming Perl," comes the reply I've been dreading. You see, I know all about "this folder". We had a training course for employees in Perl, and the company which gave the course used these (imported!) notes.
There's one small problem with the notes: they're horrible. "use strict;" and the -w flag don't show up in the code samples at all (they do mention these "features" of the language towards the end). No wonder they don't show up: almost none of the code presented would work in their presence.
The code which does work is written with extremely poor style: Some keywords always get brackets around their arguments (print does, but not print FILEHANDLE). chop is used instead of chomp. The programs "work" due to various flukes, so if you change one line the whole thing might stop working. They don't know about undef. Or exists. Or delete. Or anything else about Perl, for that matter.
We stopped the Perl course, but the folders are still seeping around the company, slowly working their evil magic into peoples' minds.
"No, don't use that," I try; "it's awful. It contains mistakes. The style is atrocious. Read Learning Perl instead, or we can go down to the library and I'll pick out some other good book which you like."
"No, I like this one. It gives me a good view. I can always fill in the missing parts later. This folder is good for beginners; it's not too complex."
Another battle lost. The problem with the cursed -5 folder of evil Perl is not that it doesn't cover everything; it is OK to speak baby Perl, says Larry Wall, and experience shows he's mostly right about this. Stuff missing you can learn later -- you know you don't know it, so you have a topic to research in the Camel. But stuff that is present but incorrect (like ignoring whether a value is defined, and the undefedness of some values) doesn't leave you with a "hole" to fill; just with "knowledge", which happens to be false.
It is OK to teach beginners a subset. But this shouldn't come at the expense of correctness. Advanced Perl programmers have difficulty unlearning wrong things. Nobody would suggest an advanced programmer read something obviously wrong. It's also a lot harder to pass off tripe as knowledge to somebody who knows the general layout of that region of knowledge.
Beginners are evidently different. They have far fewer ways of knowing that the book is wrong. So it's much easier to pass off tripe to them. This makes for books which are very easy to read.
Beginners deserve at least as much courtesy as do advanced programmmers. I don't think anybody deserves tripe. I seem to be in a minority; after all, somebody recommended the tripe to my cow orker. Either they knew it was tripe, but thought it was good enough for him, or they didn't know, but had no problem making a recommendation to a beginner for a topic where they cannot recommend anything. After all, (I hope) they'd never try to pull off the same trick on a more seasoned Perl user.
A note on the folder of disinformation. The company had bought a Perl course from an external supplier. That supplier brought in a binder from some other company. Both these (the course supplier, and the course materials supplier) knew no Perl. Well, maybe "PERL". You are (probably) safe from the folder. I hope.