サブルーチンで受け取る引数をバリデートする(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つだけなら、自力でチェックした方が簡単な気もするけど、複数の場合はモジュール使った方がいいかな。