サブルーチンで受け取る引数をバリデートする(Data::Validator)

Data::Validatorを使ってみる。

package MyApp;
use strict;
use warnings;
use Object::Simple -base;
use 5.10.0;                                                                                                    
use Data::Validator;
sub hoge {
state $r = Data::Validator->new(
id => 'Int',
)->with('Method','Sequenced','NoThrow');
my ( $self, $args ) = $r->validate(@_);
return 0 if $r->has_errors;
# 処理 ...
return 1;
}

stateを使う為に、use 5.10.0;も追加。
withの指定は、
Method:最初の引数をclass(self)に固定。
Sequenced: 引数をリストで送る場合。
NoThrow: 例外を発生させない。(has_errorsで判定を行う)

use MyApp;
my $app = MyApp->new();
$app->hoge({ id => 1111 });

引数が1つだけなら、自力でチェックした方が簡単な気もするけど、複数の場合はモジュール使った方がいいかな。