in reply to log::log4perl capture warnings

Please note that "Illegal division by zero" is not a warning but an exception, i.e. a fatal error. With a warning, the script will usually print the warning and continue to execute. Not so with "Illegal division by zero": the program will immediately cease to execute (unless you trap the exception). Consider this one-liner:
$ perl -e 'use strict; use warnings; my $c = 1/0; print "we get there\ +n";' Illegal division by zero at -e line 1. $
As you can see, the final statement is not executed, we don't even "get there".

Compare to this, where the error is trapped within an eval block:

$ perl -e 'use strict; use warnings; eval {my $c = 1/0;}; print "we +get there but got the following problem:\n $@ \n";' we get there but got the following problem: Illegal division by zero at -e line 1. $
Here, the program does not die, but checking the value of the $@ makes it possible for the developer to possibly take other actions than just dying (for example if something can be recovered, so that the error should not be fatal).

Je suis Charlie.