麋鹿你如何对每一次输入进行强制攻击?

时间:2011-12-14 16:23:17

标签: perl moose

我有一个属性,我想对每个输入值进行强制攻击。在0.72之前,这是通过从Str强制Str来完成的。删除此功能后,我使用Meta::TypeConstraint文件进行硬件攻击以保持生产代码正常工作。自Moose 2.0

发布以来

我过去只是将此更改评论为return $_[0] if $self->check($_[0]);

sub coerce {
    my $self = shift;

    my $coercion = $self->coercion;

    unless ($coercion) {
        require Moose;
        Moose->throw_error("Cannot coerce without a type coercion");
    }

    #return $_[0] if $self->check($_[0]);

    return $coercion->coerce(@_);
}

然而,在Moose v2中进行相同的更改不起作用。我正在使用此功能用于我知道要用正则表达式清理的字段。但是,检查它们是否符合是没有意义的,因为(几乎)它们都不符合。我使用这种方法来处理简单的事情,例如在字符串上运行正则表达式,或者重新格式化字符串(它可以代表现实世界中的数字符号表示数据库可以使用的内容)。

1 个答案:

答案 0 :(得分:0)

我可以想到的唯一理由是,如果你使用强制手段来解决他们的副作用,那么我想把强制手段放在每一个输入上,在这种情况下,我会把你推荐给历史悠久的医生笑话:

  病人:医生,我这样做会很疼。
  医生:那么,不要这样做。

我意识到你可能需要修复很多代码,但我不怀疑你最终会得到更清晰的代码。