http://www.perlmonks.org?node_id=1016186


in reply to Re^2: How come undef eq '' ??
in thread How come undef eq '' ??

I thought 'use warnings' was discouraged for published modules? I've always added it for development, but removed for distribution.

Replies are listed 'Best First'.
Re^4: How come undef eq '' ??
by muba (Priest) on Jan 31, 2013 at 02:41 UTC

    perlmodlib begs to differ:

    Try to use warnings; (or use warnings qw(...); ). Remember that you can add no warnings qw(...); to individual blocks of code that need less warnings.

      Effective Perl Programming, Chapter 11 has a small section titled 'Warnings in production.'

      The reasoning seems to be as follows:

    • Run time warnings impose a small speed penalty
    • - Probably not a problem
    • Warnings are meant to be seen by developers, not users
    • - Seems reasonable
    • Warnings change between versions of perl
    • - Some might feel new warnings popping up is a 'good thing'

      I could have swore i've read similar arguments in another book, but I can't find it. Its interesting that perlmodlib suggests to always 'use warnings' as this conflicts with what i've read.

      Edit: Found it. Perl Best Practices says: "Note that it may still be appropriate to comment out the use warnings line when your application or module is deployed, especially if non-technical users will interact with it, or if it will run in a CGI or other embedded environment. Issuing warnings in these contexts can needlessly alarm users, or cause server errors."

      Edit2: And again. Mastering Perl says (footnote 34) In general, I recommend turning off warnings once a program is in production. Turn on warnings when you need to test or debug the program, but after that, you don't need them. The warnings will just fill up log files.