MooseX::Params::Validateでメソッド引数のvalidation

MooseX::Methodとやりすぎ感があるけれど、これくらいなら良さそう。

モジュールのインターフェースになる部分に使うのがよさそうだなぁ。入り口でがちがちにValidationかけるのは、個人的な趣味にあう。

#!/usr/bin/env perl
use strict;
use warnings;
use Perl6::Say;

{

    package Foo;
    use Moose;
    use MooseX::Params::Validate;

    sub foo {
        my ( $self, %params )
            = validate( \@_, bar => { isa => 'Int', default => 'Moose' }, );
        return "Horray for $params{bar}!";
    }   
}

my $foo = Foo->new;
say $foo->foo( bar => 1 );         #success
say $foo->foo( bar => 'hoge' );    #fail

__END__

# ただ、現状のエラーメッセージはあまりにひどいのだけれど...