Usted puede poner esto en la parte superior de Constants.pm
:
package main;
En este caso, todas las variables se definen estará en el espacio de nombres main
:
$main::x
o si te sientes valiente :
package;
En este caso, todas las variables que define w la enfermedad esté en un espacio de nombres vacío:
$::x
Tenga en cuenta que el uso de package
sin espacio de nombres no es recomendable, y al parecer será obsoleto en algunas versiones de Perl. Vea la cita a continuación.
Citando 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.
Editar: Esta pregunta podría ser útil también: How do I use constants from a Perl module?
Gracias. Lo que realmente necesitaba es la pieza sobre omisión de "principal". – Lev
Tengo curiosidad si realmente funciona. Si lo hace, eliminaré el descargo de responsabilidad en la parte superior de la respuesta. –
Esto pone las constantes en main ::, pero ahora tiene que prefijar todas las constantes con main :: –