perldocでソース読んでたら出てきたので。メモ初級編。サブルーチンで使うと幸せになれそうですね。
引数が与えられたかどうかのチェック
型までは見ない。
use Params::Validate qw(:all); sub foo { my $args = validate( @_, { hoge => 1, ## mandatory (必須) fuga => 0, ## optional }); print $args->{hoge}, "\n"; print $args->{fuga}, "\n" if defined $args->{fuga}; } my %hash = ( hoge => 100, fuga => 200 ); foo( %hash ); foo( \%hash ); # ハッシュリファレンスでもいける
validateはコンテキストによって返す型が異なる。って書いてた。
引数の型もチェック
typeで型を指定。optional を設定しなければその変数は必須扱い。
use Params:Validate qw(:all); sub bar { my $args = validate( @_, { hoge => { type => SCALAR, }, fuga => { type => ARRAYREF, optional => 1 }, }); print "hoge: ", $args->{hoge}, "\n" if defined $args->{hoge}; print "fuga ", @{ $args->{fuga} }, "\n" if defined $args->{fuga}; }