in reply to -w in production environment

I agree with people that you should keep -w in production code. Sure, it does mean you might have to add some more code where you otherwise could get away with cutting corners. But if later the customer comes with "it doesn't work", and you have nothing else to fall back on (nothing in the error logs), it might be hard to fix the problem, while it would have been trivial if you had the warning(s).

I am however surprised about the suggested "fixes" several of the previous posters gave. Just checking whether $USER {coffee} exists or is defined fixes all possible warnings! Sure, it avoids the use of uninitialized value warning, but clearly, the form input hasn't been checked for sanity! What if $USER {coffee} contains Java? Argument "java" isn't numeric in numeric gt isn't much better as warning message.

You cannot trust form input. Don't assume it's there, and don't assume it's in the format you want it to be. Don't assume it's a number just because you are going to use it as a number.

-- Abigail