¿Cuál es la diferencia entre hacer use My::Module
y require My::Module
?En Perl, ¿cuál es la diferencia entre usar y requerir para cargar un módulo?
Respuesta
La función use
:
use ModuleName;
es equivalente al siguiente código utilizando la función require
:
BEGIN {
require ModuleName;
ModuleName->import;
}
El bloque BEGIN
hace que este código para funcionar tan pronto como el analizador ve. El require
carga el módulo o lo intenta die
. Y luego se llama a la función import
del módulo. La función import
puede hacer todo tipo de cosas, pero es común que cargue funciones en el espacio de nombres que use
d it (a menudo con el módulo Exporter
).
Es importante señalar que la importación no serán llamados en este caso:
use ModuleName();
En ese caso, es equivalente a
BEGIN {
require ModuleName;
}
La página de manual dice que es * exactamente * equivalente :) – Inshallah
@Inshalla Me gusta dejar un poco de margen de maniobra para mi memoria defectuosa. –
De perldoc -q
"difference between require and use":
use Module
es comorequire Module
, excepto queuse
4.1: carga el módulo en tiempo de compilación, no en tiempo de ejecución.
4.2: importa los símbolos y la semántica de ese paquete al actual.
use
se ejecuta en tiempo de compilación, y require
se ejecuta en tiempo de ejecución.
No olvides la llamada de 'import'. –
Esta es la respuesta que están buscando en las pruebas de Perl y entrevistas de trabajo. ¡Necesitas memorizar esto! – Hawk
Perl viene con gran documentación. Todos se beneficiarían al leer toda la documentación al menos una vez cada pocos meses.
De lo contrario
require
demandas que un archivo Biblioteca Sé incluido si aún no lo ha sido incluido. El archivo se incluye a través del mecanismo do-FILE , que es esencialmente solo una variedad de eval con la advertencia de que las variables léxicas en la secuencia de comandos de invocación serán invisibles para el código incluido. tiene una semántica similar a la siguiente subrutina :
... etc.Del mismo modo,
C:\>
perldoc -f use
importa aproximadamente la semántica en el paquete actual desde el módulo llamado, en general por aliasing cierta subrutina o nombres de variables en su paquete . Es exactamente equivalente a
BEGIN { require Module; Module->import(LIST); }
excepto que el Módulo debe ser una palabra clave.
... etc
También existe la perlfaq entry aunque creo que es menos informativo que lo anterior.
Además del maravilloso comando 'perldoc', puede acceder a toda la misma documentación a través de http://perldoc.perl.org –
Ah. Sus etiquetas kbd hacen que sea más difícil decir qué es un enlace (además de mostrar no muy bien). – ysth
- 1. En Perl, ¿es mejor usar un módulo que requerir un archivo?
- 2. ¿Cuál es la diferencia entre módulo y distribución en CPAN?
- 3. ¿Cuál es la diferencia entre @ y @@ en un módulo?
- 4. ¿Cuál es la diferencia entre requerir y cargar en el ceceo común?
- 5. En Perl, ¿cuál es la diferencia entre un archivo .pm (módulo Perl) y un archivo .pl (script Perl)?
- 6. ¿Cuál es la diferencia entre BAREWORD y * BAREWORD en Perl?
- 7. ¿Cuál es la diferencia entre grep y map en Perl?
- 8. ¿Cuál es la diferencia entre open y sysopen en Perl?
- 9. ¿Cuál es la diferencia entre 'eq' y '= ~' en Perl?
- 10. ¿Cuál es la diferencia entre Perl modules autodie y Fatal?
- 11. ¿Cuál es la diferencia entre paquete, módulo y clase en Perl orientado a objetos?
- 12. ¿Cuál es la diferencia entre "perl test.pl" y "./test.pl"?
- 13. Diferencia entre "incluir" y "requerir" en php
- 14. Para el comando cmake "incluir", ¿cuál es la diferencia entre un archivo y un módulo?
- 15. ¿Cuál es la diferencia entre "incluir módulo" y "extender módulo" en Ruby?
- 16. ¿Cuál es la diferencia entre usar MD5.Create y MD5CryptoServiceProvider?
- 17. ¿Cuál es la diferencia entre un espacio de nombres y un módulo en F #?
- 18. ¿Cuál es la diferencia entre un módulo y un script en Python?
- 19. ¿Cuál es la diferencia entre usar WorkflowInvoker y WorkflowApplication?
- 20. ¿Cuál es la diferencia entre un árbol y un directorio?
- 21. ¿Cuál es la diferencia entre padre y base en Perl 5?
- 22. Al crear scripts, ¿cuál es la diferencia entre #!/Usr/bin/perl y #!/Usr/bin/env perl?
- 23. Cuál es la diferencia entre $ y jQuery
- 24. Cuál es la diferencia entre = y: =
- 25. ¿Cuál es la diferencia entre ".equals" y "=="?
- 26. ¿Cuál es la diferencia de usar la variable especial $ _ y @_ en Perl?
- 27. ¿Cuál es la diferencia entre el sistema y los retropalos y tuberías en Perl?
- 28. Diferencia entre una clase y un módulo
- 29. ¿Cuál es la diferencia entre un objeto y una clase en Perl?
- 30. ¿Cuál es la diferencia entre dict() y {}?
@Ether: pero este es el m. Uno de ellos, de todos modos. – ysth
Esto puede ser fácil de entender por su cuenta, pero definitivamente es una muy buena pregunta de Perl que los principiantes son propensos a preguntar. No veo por qué no debería estar en stackoverflow. ¿Dónde está el daño? – innaM