我正在寻找一个通用模块,以从验证子程序和方法参数中获取这些苦差.我已经扫描了CPAN的各种可能性:
Params::Validate
,Params::Smart
,Getargs::Mixed
,Getargs::Long
和其他几个.
任何关于这些或其他模块的利弊的信息将不胜感激.谢谢.
解决方法
如果你开始使用
Moose
,你会发现你喜欢
MooseX::Types
.类型自动有一个is_ $type()和to_ $type().这些是为了确保您输入传递类型约束,或使您的输入对该类型有有效的胁迫.我喜欢他们更好,即使是这些类型的东西,因为您可以确保您的对象的状态具有所述类型没有额外的成本.
use Moose; has 'foo' => ( isa => MyType,is => ro ); sub _check_my_type { my ( $self,$type ) = @_; is_MyType( $type ); };
它可能缺乏对深度/递归类型的一些支持,但是如果你在现代perl中使用这些东西,你可能会“做错了”.而是使用一个具有自己的一致性检查的对象(像我上面的MyType一样),只是传递对象.