On 2017-07-04 01:13:09, REHSACK wrote:
Show quoted text> On Mon Jul 03 18:28:52 2017, ETHER wrote:
> > "use warnings FATAL => 'all';" fatalizes *all* warnings, even one
> > that
> > might appear in an upstream module that you are using. This means
> > that
> > if *any* warning happens anywhere, even one that you cannot control,
> > the program stops. In a production environment this is a very bad
> > thing. I'd much rather have a warning in my log that I can deal with
> > during waking hours, rather than at 3am on a long weekend.
>
> I read this very rare from always the same group of people. But it
> never comes with a sane test code demonstrating the issue.
>
> Requirements to the test code:
> 1) it should be reproducible without hours of preparation
> 2) it should not be coverable by a reasonable CI
Ok, here's an example. In the 5.24 release cycle, perl deprecated the use of { in a regular expression without an escape. Usage of a regexp like qr/{/ now results in a warning like: "Unescaped left brace in regex is deprecated here". If some bit of code that MooX::Options uses (say, Module::Runtime) contains some code that starts generating deprecation warnings, ** MooX::Options will die ** even though this is 1. just a warning and code behaviour remains unchanged, 2. not even something that MooX::Options can fix.
Sometimes warnings happen unpredictably, and *** they should remain warnings, not fatal ***. Waking people up in the middle of the night because their program stopped working, and it turns out to be something that isn't actually an emergency, makes sysadmins very very grumpy and this is passed on to the programmers.
Please do not make all warnings fatal.