FV::Liteでvalidメソッドとinvalidメソッドを書いてみると
多分こうなる
sub valid { my ( $self, $key ) = @_; return !$self->has_error unless $key; return $self->{_error}->{$key} ? '' : $self->{_q}->param($key); } sub invalid { my ( $self, $key, $rule ) = @_; return $self->has_error unless $key; my $vkey = $self->{_error}->{$key}; return 0 unless $vkey; return keys(%$vkey) unless $rule; return !$vkey->{$rule}; }