"I am not familiar with these errors so far since I am trying to script with warnings and strict from now on to become a better programmer."
Try using the diagnostics pragma for more descriptive error messages:
use strict; use warnings; use diagnostics;
As an example, I posted this earlier today:
$ perl -Mstrict -Mwarnings -le 'for (0..1) { our $x = $_ } print $x' Variable "$x" is not imported at -e line 1. Global symbol "$x" requires explicit package name at -e line 1. Execution of -e aborted due to compilation errors.
This is probably not overly useful if you've just started learning Perl; however, with diagnostics you get a more verbose explanation of the problems:
$ perl -Mstrict -Mwarnings -le 'use diagnostics; for (0..1) { our $x = + $_ } print $x' Variable "$x" is not imported at -e line 1 (#1) (W misc) With "use strict" in effect, you referred to a global var +iable that you apparently thought was imported from another module, beca +use something else of the same name (usually a subroutine) is exported + by that module. It usually means you put the wrong funny character o +n the front of your variable. Global symbol "$x" requires explicit package name at -e line 1. Execution of -e aborted due to compilation errors (#2) (F) You've said "use strict" or "use strict vars", which indicates + that all variables must either be lexically scoped (using "my" or +"state"), declared beforehand using "our", or explicitly qualified to say which package the global variable is in (using "::"). Uncaught exception from user code: Global symbol "$x" requires explicit package name at -e line 1. Execution of -e aborted due to compilation errors. at -e line 1.
See also: perldiag
-- Ken
In reply to Re: why does this perl routine error?
by kcott
in thread why does this perl routine error?
by robertw
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |