構造を検証する関数を作成し、
まず...の部分にこれを打破するのをしてみましょう:
sub validate
{
my ($data) = @_;
# always return true for now
return 1;
}
今、あなたは、フィルタを使用したい...のはビットで埋め始めましょう妥当性チェックの一環として名前、それでは、引数としてそのを追加してみましょう。
sub validate
{
my ($data, $filter_name) = @_;
# always return true for now
return 1;
}
何かを行う前に、それはそのフィルタ名をキーとして存在しているかどうかをチェックするために理にかなって。一致しない場合は、検証に失敗しました:
sub validate
{
my ($data, $filter_name) = @_;
return if not exists $data->{$filter_name};
# otherwise, return true
return 1;
}
また、値があることを確認してください。ハッシュ・キーの定義は 'exists'のスーパーセットであるため(定義されている値も存在する必要がありますが、存在するすべての値を定義する必要はありません - undefは値になります)、
sub validate
{
my ($data, $filter_name) = @_;
return if not defined $data->{$filter_name};
# otherwise, return true
return 1;
}
我々はFILTER_NAMEキーがデータ内に存在していることをチェックしましたし、それが定義されていますが、より深い1つのレベルを探す前に、我々はそれが本当にハッシュ・リファレンスであることを確認する必要があります。今すぐ
sub validate
{
my ($data, $filter_name) = @_;
return if not defined $data->{$filter_name};
return if ref $data->{$filter_name} ne 'HASH';
# otherwise, return true
return 1;
}
フィルタ名の下にある 'filter_actions'と 'filter_criteria'キーを探します。
sub validate
{
my ($data, $filter_name) = @_;
return if not defined $data->{$filter_name};
return if ref $data->{$filter_name} ne 'HASH';
return if not defined $data->{$filter_name}{filter_actions};
return if not defined $data->{$filter_name}{filter_actions};
# otherwise, return true
return 1;
}
これだけです! perldoc perlreftoot、perldoc perlref、およびperldoc perldscのperlデータ構造を使って読んでください。
をそうよう
要素を数えますか? – Ether