If you get a warning or error from Perl that you don't understand you have several choices:

Beyond the short error message or warning you get from perl, you can also ask perl to provide you a long explanation. You can do this either by adding use diagnostics; to your code (recommended only during development), or by saving the error message in a file and then using splain.

Illegal division by zero

Let's use a trivial example:

$x = 0;
print 1 / $x;

If we have the above code (though you should always use strict and warnings too) in a file called x.pl and we run it using perl x.pl we get the error:

Illegal division by zero at x.pl line 2.

I know. This error is probably obvious to most people familiar with basic math and when you encounter such error, the main issue is probably how did 0 end up in denominator, in our case in $x?

Nevertheless it is a good example to show how to get more detailed explanation:

use diagnostics

Add use diagnostics to the code:

use diagnostics;

$x = 0;
print 1 / $x;

run as perl x.pl

The output looks like this:

Illegal division by zero at x.pl line 4 (#1)
    (F) You tried to divide a number by 0.  Either something was wrong in
    your logic, or you need to put a conditional in to guard against
    meaningless input.

Uncaught exception from user code:
    Illegal division by zero at x.pl line 4.

splain

Splain is a command-line tool that comes with the standard installation of Perl.

We run the original script (without adding use diagnostics but we redirect the standard error to a file:

perl x.pl 2> x.err

The we run:

splain x.err

It will print

Illegal division by zero at x.pl line 2 (#1)
    (F) You tried to divide a number by 0.  Either something was wrong in
    your logic, or you need to put a conditional in to guard against
    meaningless input.

splain in a pipe

The more adventurous Linux/Unix user can also pipe the error message through splain without saving it in a file using

perl x.pl 2>&1 | splain