There are two ways new programmers become superior programmers.
First is for them to join a small company in which they are "it" for programming solutions.
The second way is for them to become part of a larger org in which there is room for the kind of mentoring
tilly describes.
There are many small companies -- still -- in which the programming duties are handled by one guy or a small team of less than 5. The other case is definitely going away as larger shops seek the Java bandwagon. One can argue that trial-by-fire is a harsh training ground, but it is also _the_ way to build a broad skill base that leads to greatness. I'll argue any day that a good programmer who's been a loner can fit in quite well in a group shop, whereas a group-contributer rarely can rise to become cream unless he's really, really self-motivated.
I don't consider myself a great programmer, but, then, I compare myself to the 1% who write kernel code and new languages. When I look at them, I'm a 6 on a scale of one to ten. That's not my goal, though. I'm not a programming purist. What I do pretty well is seeing how to solve business problems with code and programmers.
Looked at from that perspective, startups are the proving ground for new programmers (Perl or otherwise). The days of programming "shops" are limited, IMHO. Unless a company is focused on development of products or services that go beyond trading time for money directly, they cannot afford to train, mentor, or support newbie coders. Especially not here. Too many Bulgarians, Indians, and Ukrainians are out there, and they're hungry enough to become very good.
This I know from personal experience... we imported two of them, and I've been very happy with the results.
Don Wilde
"There's more than one level to any answer."