use strict;
use warnings;
use diagnostics;
####
$ 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.
####
$ 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 variable
that you apparently thought was imported from another module, because
something else of the same name (usually a subroutine) is exported by
that module. It usually means you put the wrong funny character on 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.