J'essaie d'utiliser Moose. C'est génial, quand ça marche. Cependant, j'ai trouvé quelque chose qui ressemble à un bug (mais je vais demander ici avant de le commettre).Pourquoi ce sous-programme de coercition de Moose ne fonctionne-t-il pas sur Perl 5.8.8?
Quand je lance ce code
package Experiment;
use Moose;
use Moose::Util::TypeConstraints;
subtype 'K'
=> as 'Str';
coerce 'K'
=> from 'Str'
=> via {
s/^([^_]*).*$/$1/;
};
has 'k' => (
is => 'ro',
isa => 'K',
coerce => 1
);
1;
package main;
my $exp = new Experiment(k=>"abcd_efgh");
print $exp->k."\n";
Sur un ordinateur avec perl 5,010, il montre correctement abcd
. Quand je l'exécute sur un autre ordinateur avec 5.8.8 (où le script, malheureusement, doit fonctionner aussi), je vois incorrect abcd_efgh
; et le sous-programme de coercition ne semble jamais fonctionner réellement (si j'ajoute une impression ou meurs là, par exemple, rien ne se passe sur la machine 5.8.8).
(Il est vraiment simplifié, mais il est un cas de la vie réelle réelle - je dois forcer K à partir de chaînes, qui ont toujours des déchets après underscore)
Pensez-vous qu'il est un bug Moose?
Les versions Moose sont-elles à jour? – daxim
Oui, c'est 1,19, selon le CPAN. –