To naprawdę dobra funkcja. Niestety, w przeciwieństwie do tego, co zaprogramował autor modułu, perl nie ma wiedzy, czy moduł ma warianty XS lub Pure Perl (PP) i czy silnik został załadowany poprzez awarię.
Ten przykład, który wprowadzasz, jest potęgowany przez efekt, w którym są one pakowane w tej samej dystrybucji i module, i to wszystko odbywa się wewnętrznie. Zamontowałbym go zgodnie z konwencją CPAN: DateSimple
, która wymaga DateSimple::PP
i zaleca DateSimple::XS
. W ten sposób robią to inni. Ta metoda pozwala bezpośrednio używać konstruktora ::XS
do wymuszania użycia XS
i jednocześnie nie instaluje nawet wariantu pureperl. Alternatywnie możesz je spakować razem - tak robi Template::Stash
z Template::Stash::XS
. Pierwszym krokiem do uzyskania czegoś ujednoliconego jest uzyskanie funkcji ad-hoc.
Takie rzeczy można łatwo zrobić, jeśli wszystkie moduły pociągnął w Moose::Role
który dostarczył kilka podstawowych atrybutów _xs_class_name
, _pp_class_name
i engine_override
. Ale znowu nie ma nic, co mogłoby zaowocować nawet zunifikowanym interfejsem API.
Odpowiedź na ogólne podejście, ale jako "DateTime" jest defacto perl distro do reprezentowania dat. –
@Evan Carroll, DateTime może być najpopularniejszym (i pełnometrażowym), ale nie jest to jedyny użytkownik, z którego korzystają. Istnieje wiele modułów daty Perla. – cjm