¿El símbolo global requiere el nombre explícito del paquete? ¿Por qué ha ocurrido esto y qué son varios los casos que pueden causar este error?El símbolo global requiere el nombre explícito del paquete
Respuesta
Tenga una mirada en perldiag:
global del símbolo "% s" requiere explícita el nombre del paquete
(F) que ha dicho "use strict" o la "utilización VARs estrictas", que indica que todas las variables deben tener un alcance léxico (usando "mi" o "estado"), declaradas previamente usando "nuestro", o explícitamente calificadas para decir en qué paquete se encuentra la variable global (usando "::").
Para decir específicamente qué lo causó en su código, necesitaría publicar su código.
El error es emitida y la secuencia de comandos se detiene porque tienes use strict
o un derivado de la misma. El error ocurre porque su programa llama a una variable fuera del alcance.
Es posible que haya usado mi o local dentro de un procedimiento/función de sub, pero están tratando de usarlo dentro de otro procedimiento, o fuera de la llamada a la función.
sub foo{ my $bar=0; our ($soap) = 1; } foo(); print $bar , "\n"; # does not work w/ strict -- bar is only in the scope of the function, not globally defined print $main::bar , "\n"; # will run, but won't be populated print $soap , "\n"; # does not work w/ strict -- the package isn't defined print $main::soap , "\n"; # will run and work as intended because of our
Está utilizando el use strict;
afirmación es decir, sus códigos tienen que estar dentro de los reglamentos de escribir comandos en Perl.
¿Qué regulación de la escritura de comandos Perl se está violando? – alex
También puede suceder cuando la declaración anterior no está completa.
use strict;
sub test;
test()
# some comment
my $x;
Perl ahora se queja con el siguiente mensaje de error:
my "
Global symbol "$x" requires explicit package name
El error no está en la declaración de "mi", pero a la falta punto y coma (;
) en test()
.
¡Gracias! Me estaba arrancando el pelo. – Zack
utilizando variables de estado sin use feature "state"
o use v5.10
a menos que la palabra clave esté escrita como CORE :: state.
De hecho, si se utiliza use strict;
y en algún lugar se le pasa ;
al final de un comunicado, a continuación, las siguientes afirmaciones (que tienen una sintaxis perfecta) podría incrementar símbolo global requiere nombre de paquete explícito también.
- 1. ¿Por qué dice Perl El símbolo global "SÍMBOLO" requiere un nombre de paquete explícito en la línea X de PROGRAM.pl?
- 2. cambiar el nombre del proyecto y el nombre del paquete
- 3. Global ASAX: obtenga el nombre del servidor
- 4. obtener el nombre de la aplicación del nombre del paquete
- 5. Java: ¿usar importación o un nombre explícito de paquete/clase?
- 6. android, cómo obtener el nombre del paquete?
- 7. ¿Es una mejor práctica usar el nombre del paquete: símbolo en el código O: uso: nombre del paquete en un DESMONTAJE?
- 8. ¿Por qué Android requiere que el nombre del paquete tenga al menos dos identificadores?
- 9. Python: obtenga el nombre completo del módulo del paquete
- 10. Oracle PL/SQL: cómo obtener la pila, el nombre del paquete y el nombre del procedimiento
- 11. javadoc sin nombre del paquete
- 12. Log4J nombre del show paquete
- 13. El nombre global 're' no está definido
- 14. Establecer el color del texto global?
- 15. versión de tira desde el nombre del paquete usando Bash
- 16. ¿Cómo puedo obtener el nombre del paquete en android?
- 17. iniciar la aplicación sabiendo el nombre del paquete
- 18. ¿Por qué se requiere el paquete redistribuible de Visual C++?
- 19. Dado el nombre de un paquete de Python, ¿cuál es el nombre del módulo para importar?
- 20. Alias o alias del nombre del paquete
- 21. El paquete contiene el objeto y el paquete con el mismo nombre
- 22. ¿Cómo se llama una subrutina de un paquete, dado el nombre del paquete en Perl?
- 23. Obteniendo el nombre de clase actual incluyendo el paquete
- 24. ¿Cómo obtener el nombre de una clase sin el paquete?
- 25. undefined símbolo: SSLv2_method al ejecutar la instalación del paquete
- 26. Scala: palabra clave como nombre del paquete
- 27. Nombre del paquete, nombre del archivo ejecutable, nombre del producto ... ¿algo más?
- 28. ¿El sufijo de identificación del paquete es el mismo que el identificador del paquete en info.plist?
- 29. Desplazamiento en el valor del símbolo nm?
- 30. Windows powershell: cambiando el símbolo del sistema
Muestra el código de perl? Consulte http://stackoverflow.com/q/4257179/10468 o busque preguntas sobre módulos perl. Consulte también (fuera del sitio) http://www.sitepoint.com/forums/showthread.php?501379-Perl-require-and-variables – DarenW