in reply to unwanted error messages appearing :-)

1) Why are these errors being generated to the Apache error log on the dev server but not the other two servers?
2) How do I make it stop?

The easy way to make it stop is to add

$HASH{key} ||= "";
before the print. But that doesn't get you closer to a root cause.

Assuming that you've verified that the scripts really are identical, you might look to see that if the scripts do

use warnings;
If so, verify that warnings.pm is identical on each server. It's kind of a long shot, but someone may have tweaked on of them to "get rid" of a similar problem. It's an evil thing to do, but I've worked with some evil people, so it may be worth checking.