The easiest trap to fall into when trying to figure out
what's wrong with a piece of code is to look for
all the things that are right with it. It goes
something like this: "Okay, if $i is zero we'll get
through this loop okay, ... the substitute will change the 'barf'
in $string to 'arf' ... yeah ... and when it gets here
it should print 77 ... right." This mental dialog always ends with, "Well,
shoot, that should work!" If I ever find myself
saying this, I know I need to back up and realize, "Hey, it doesn't
work, that's why you're going through this in the
first place!" That's usually enough to kick me into a different
groove.