This is so very true. I had a problem once where I wrote a huge script and embedded lots of code like this:
print DEBUGOUT "blah blah debug message blah" if DEBUGGING;
And the code worked great in debug mode. But for the real thing I didn't want this huge debug log being generated so I flipped the bit, so to speak, and the thing stopped working. I spent a day trying to figure out why it only worked in debug mode... hehe the line at fault looked a little like this:
print DEBUGOUT "key=$a, value=$b\n" while( ($a, $b) = each %hash and D
The problem? When I'm debugging the code the each
iterator was able to go all the way through, but when I'm not debugging, the each iterator gets run once and then stops. When I need it later, I'm off by one. Ooops.
By the way, while I could have fixed this by swaping the order inside the while predicate, I opted to follow a fellow Monk's advice and used Data::Dumper