Я пытаюсь использовать лося.Здорово, когда это работает.
Однако я обнаружил что-то, похожее на ошибку (но я спрошу здесь, прежде чем это делать).
Когда я запускаю этот код
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";
На одном компьютере с Perl 5.010 он правильно показывает abcd
.Когда я запускаю его на другом компьютере с 5.8.8 (где, к сожалению, тоже должен работать скрипт), я вижу неправильный abcd_efgh
;и подпрограмма принуждения, кажется, никогда не запускается (например, если я добавлю печать или умру там, на машине 5.8.8 ничего не произойдет).
(Это действительно упрощено, ноэто реальный случай из реальной жизни - мне нужно вывести K из строк, в которых всегда есть мусор после подчеркивания)
Как вы думаете, это ошибка Moose?