As far as Perl coders go, I less-than-humbly suggest that I am one of the better Perl coders that you are likely to run across. Is this because I'm so good? No! It's because many Perl coders out there do not have much skill with the language or with coding in general.

Many people who use Perl for simple administrative tasks do not have the time, or the need, to learn Perl well. Others, thinking that dynamic Web sites are sexy or will get them a better job, come to Perl with no programming experience at all and pick up one of the many, many terrible books written on the subject.* It's hardly their fault that their Perl skills are not well-developed, but it does tend to make my code look better by comparison.

The reality is, if you put me up against people who really know Perl, my skill is "average" at best. I am a far cry from a guru. Many monks here have been quick to heap praise on me for the assistance I have given in various areas and I have seen some positive comments about me that make me blush, but I am not a guru.

So what's the point of all of this? Simple: when I screw up, call me on the carpet. If you have checked Saints in our Book and Number of Monks by Level, then you might have noticed that out of over 7,000 registered users, I am (as of this writing) ranked number 5 in terms of total XP. This is not because of my ability with Perl. This disparity between my ranking and my Perl skill has three reasons that I can think of:

  1. I've been here, posting regularly and prolifically, since June of 2000 (read some of my earlier posts if you really want a chuckle).
  2. I try very hard to help people, since others have tried very hard to help me. People appreciate that.
  3. I usually write well. In this area, I am fortunate and know that, if I take the time, I tend to excel.

Notice that nothing on the above list mentions any consummate skill with Perl. I think the above reasons are good, solid reasons for much of my XP -- contributing to Perlmonks is just as worthy of XP as being a Perl god, so don't feel bad if you, like me, aren't "up there" in terms of skill. Unfortunately, my "Sainthood" has raised an interesting problem. It's an annoying problem that I have discussed with other high-level monks and they have noticed the same problem: we often don't get the best feedback. I suspect that many people equate my XP with Perl experience and are unsure about the wisdom of correcting me.

The title "Stubborn as a Saint" refers to the fact that sometimes I get stuck in a particular way of looking at a problem and don't consider alternatives if my solution is working. In a perfect example in a recent reply, I posted the following snippet:

%author = map { /^\d{6}$/ ? $_ : [ split( /\|/, $_, 2 ) ] } map { split( /=/, $_, 2 ) } grep { /^\d{6}=[^|]+\|/ } <FH>;

Later, in the same post, I blathered: really seems to be the most straightforward "Perlish" way of writing that.

No, it's not. That was just my mind being stubborn and taking its "first option". Fortunately, in this case, btrott posted the following:

my %author; while (<FH>) { next unless /^\d{6}=[^|]+\|/; my($l, $r) = split /=/, $_, 2; $author{$l} = [ split /\|/, $r, 2 ]; }

Furthermore, MeowChow followed it up with an even cleaner example (sorry, btrott :-):

my %author; while (<FH>) { next unless /^(\d{6})=([^|]+?)\|(.*)/; $author{$1} = [ $2, $3 ]; }

runrig then followed up with the comment that there were issues with my example and /s?he/ would post benchmarks. That makes me very happy. I still want to improve my Perl and things like this just help me improve faster.

As I mentioned, I and other high-level monks have noticed that as we rise through the ranks, others seem to be less willing to be critical of our code. Please, feel free to speak up. Do you only have 3 XP? I don't care. I can still learn from you. Do you feel like all of your code is unworthy to line a canary cage but you are convinced that I'm being an idiot? Let me know! Forget my XP. All that reflects is my contribution to this site. I know I speak for myself, but I also know that I speak for at least a few others: don't be shy.


* There are some excellent books out there for Perl, but they usually assume a programming background.

Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.