Parece que hay un nuevo pragma llamado parent
que hace aproximadamente lo mismo que base
. ¿Qué hace parent
que justifique un módulo nuevo (no principal)? Me falta algo?¿Cuál es la diferencia entre padre y base en Perl 5?
Respuesta
base
intenté hacer demasiadas cosas — manejando automáticamente los módulos de carga pero también permitiendo establecer la herencia de las clases ya cargadas (posiblemente desde un archivo cuyo nombre no estaba basado en el nombre del módulo). Para hacer que funcione, hubo algunos hackers que causaron resultados sorprendentes en algunos casos. En lugar de romper la compatibilidad con versiones anteriores, se introdujo un nuevo pragma de reemplazo parent
con una semántica más limpia.
parent
será un módulo central a partir de 5.10.1.
Actualización:base
olvidaron que maneja fields
(si está utilizando el fields
pragma), que parent
no lo hacen.
Armado con el bit adicional de información de ysth, yo era capaz de ver las diferencias en los documentos:
El pragma base
hace lo siguiente:
- añade el paquete llamado a
@ISA
- carga el módulo con el mismo nombre que el paquete nombrado usando
require
(a menos que detecte que el paquete ya se ha cargado) - no fallará si un módulo con th e mismo nombre que el paquete no existe
- muere si no hay símbolos en el paquete llamado
$VERSION
si no existe en paquete llamado, base establece que"-1, set by base.pm"
- inicializa el
fields
del paquete llamado si es que existen - no llama a la función de importación del paquete llamado
el parent
pragma hace lo siguiente:
- añade el paquete llamado a
@ISA
- carga el módulo con el mismo nombre que el paquete nombrado usando
require
- acepta una opción que dice que no a morir si un módulo con el mismo nombre que el paquete doesn' t existe
Casi. La opción no requerida simplemente le dice que no haga el requerimiento (por lo que la clase ya debe estar cargada). Esto significa que no tiene que atrapar errores y decidir si deben suprimirse o no. – ysth
- 1. ¿Cuál es la diferencia entre 'eq' y '= ~' en Perl?
- 2. ¿Cuál es la diferencia entre BAREWORD y * BAREWORD en Perl?
- 3. ¿Cuál es la diferencia entre open y sysopen en Perl?
- 4. ¿Cuál es la diferencia entre grep y map en Perl?
- 5. ¿Cuál es la diferencia entre Perl modules autodie y Fatal?
- 6. ¿Cuál es la diferencia entre "perl test.pl" y "./test.pl"?
- 7. ¿Cuál es la diferencia entre `use base` y @ISA en Perl?
- 8. ¿Cuál es la diferencia entre módulo y distribución en CPAN?
- 9. ¿Cuál es la diferencia entre estos dos fragmentos de Perl?
- 10. ¿Cuál es la diferencia entre + = y = +?
- 11. ¿cuál es la diferencia entre:.! y: r !?
- 12. ¿Cuál es la diferencia entre ".equals" y "=="?
- 13. Cuál es la diferencia entre $ y jQuery
- 14. Cuál es la diferencia entre = y: =
- 15. Cuál es la diferencia entre $ (...) y `...`
- 16. ¿Cuál es la diferencia entre dict() y {}?
- 17. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 18. En Perl, ¿cuál es la diferencia entre "si se define $ count" y "if $ count"?
- 19. ¿Cuál es la diferencia entre " " y ""?
- 20. ¿Cuál es la diferencia entre .ToString (+) y ""
- 21. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 22. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 23. ¿Cuál es la diferencia entre {0} y ""?
- 24. ¿Cuál es la diferencia entre un padre y una propiedad de referencia en Google App Engine?
- 25. Al crear scripts, ¿cuál es la diferencia entre #!/Usr/bin/perl y #!/Usr/bin/env perl?
- 26. ¿Cuál es la diferencia entre% INC y @INC?
- 27. ¿Cuál es la diferencia entre los operadores de cortocircuito de Perl (o, y) y (||, &&)?
- 28. ¿Cuál es la diferencia entre el sistema y los retropalos y tuberías en Perl?
- 29. SQLAlchemy: ¿Cuál es la diferencia entre flush() y commit()?
- 30. ¿Cuál es la diferencia entre comillas simples y dobles en Perl?
Además, comparar perl -wE'sayay requerir base 'perl -wE'say require parent' – ysth