You can put this at the top of Constants.pm
:
package main;
In this case all the variables you define will be in the main
namespace:
$main::x
or if you're feeling brave:
package;
In this case all the variables you define will be in an empty namespace:
$::x
Note that using package
with no namespace is discouraged, and will apparently be deprecated in some versions of Perl. See the quote below.
Quoting from man perlfunc
:
package NAMESPACE
package Declares the compilation unit as being in the given
namespace. The scope of the package declaration is
from the declaration itself through the end of the
enclosing block, file, or eval (the same as the "my"
operator). All further unqualified dynamic identifiers
will be in this namespace. A package statement affects
only dynamic variables--including those you've used
"local" on--but not lexical variables, which are cre?
ated with "my". Typically it would be the first decla?
ration in a file to be included by the "require" or
"use" operator. You can switch into a package in more
than one place; it merely influences which symbol table
is used by the compiler for the rest of that block.
You can refer to variables and filehandles in other
packages by prefixing the identifier with the package
name and a double colon: $Package::Variable. If the
package name is null, the "main" package as assumed.
That is, $::sail is equivalent to $main::sail (as well
as to $main'sail, still seen in older code).
If NAMESPACE is omitted, then there is no current pack?
age, and all identifiers must be fully qualified or
lexicals. However, you are strongly advised not to
make use of this feature. Its use can cause unexpected
behaviour, even crashing some versions of Perl. It is
deprecated, and will be removed from a future release.
Edit: This question might be helpful as well: How do I use constants from a Perl module?