Esta es una muy buena solicitud de funciones. Desafortunadamente, a menos de lo que el autor del módulo ha programado, Perl no tiene conocimiento si el módulo tiene variantes XS o Pure Perl (PP) y si el motor se cargó a través de la recuperación.
Este ejemplo que aparece se complica por el efecto de que están empaquetados en la misma distribución y módulo, y todo se hace internamente. Lo parchearía para seguir la convención CPAN: DateSimple
, que requiere DateSimple::PP
y recomienda DateSimple::XS
. Así es como Text::CSV
y otros lo hacen. Este método permite usar el constructor ::XS
directamente para forzar el uso de XS
y al mismo tiempo ni siquiera instalar la variante pureperl. Alternativamente, puede empaquetarlos juntos: esto es lo que Template::Stash
hace con Template::Stash::XS
. El primer paso para obtener algo unificado es obtener la funcionalidad ad-hoc.
Este tipo de cosas se puede hacer fácilmente si todos los módulos sacaron en una Moose::Role
que proporciona algunos atributos básicos _xs_class_name
, _pp_class_name
y engine_override
. Pero, de nuevo, no hay nada a partir de ahora que incluso siembra una API unificada para lograr esto.
He respondido en el enfoque genérico, pero como un aparte 'DateTime' es la distribución perl defacto para representar las fechas. –
@Evan Carroll, DateTime puede ser el más popular (y completo), pero no es el único que usan las personas. Hay muchos módulos de fecha de Perl. – cjm