« W41Sにしました | メイン | ASCII24、RBBTODAY、ImpressのEntryFullText »

FormValidator::Simple::Plugin::InArray

PHPにはあるらしいin_arrayFormValidator::Simple

use FormValidator::Simple qw/InArray/;
my $result = FormValidator::Simple->check( $q => [
    param => [qw/IN_ARRAY foo bar baz/]
]);

paramの値がlistの中にあれば真。
NOT_IN_ARRAYも使える。

実装はList::Utilのfirstを使っているだけ。listの要素数が多い場合は実装を変えた方がいいだろうな。

package FormValidator::Simple::Plugin::InArray;

use strict;
use warnings;
use FormValidator::Simple::Exception;
use FormValidator::Simple::Constants;
use List::Util qw/first/;

our $VERSION = '0.01';

sub IN_ARRAY {
    my ( $class, $params, $args ) = @_;
    my $data = $params->[0];

    return ( first { defined $_ && $_ eq $data } @$args ) ? TRUE : FALSE;
}

1;

コメント

List::MoreUtils の any ではどうでしょうか。

ども。
有用そうなのでプラグインより
本体に取り込んだほうがよさげですね。

ただ、まだ自宅がネットつながらないので
中々身動きとれません。
色々アウトプットしていただいてるのにすみません…

もう一週間だけ待ってくださいw

> miyagawaさん
List::MoreUtilsの方でもいいかもしれません。
FormValidator::Simpleの方でも使っていますし。

> katoさん
よろしくお願いします。

コメントを投稿